{"id":"locale-number","title":"Parse locale-formatted money text (1.234,56, 1,00,000, accounting parentheses) without guessing","description":"Parses up to 100 number or money strings such as \"1.234,56\", \"1,00,000\", \"(1,234.50)\", \"￥1,000\" or \"CHF 1'234.50\" into canonical decimal strings, for an agent reading amounts from documents, emails or tables. With a BCP 47 locale it applies that locale's CLDR separators (read from Intl.NumberFormat); without one it lists every valid reading and an ambiguous string such as \"1,234\" returns unknown with both (1234 and 1.234) instead of a guess. Understands leading and trailing minus, U+2212, accounting parentheses, non-ASCII digit systems and currency symbols or ISO codes (a symbol shared by several currencies, such as ¥ or $, is reported as ambiguous unless the caller names the currency). Does not convert currencies and does not round.","roi":"\"1,234\" is one thousand or one-point-two-three-four depending on the author; the wrong guess is a 1000x error. Ambiguity is returned, not resolved silently.","audience":"business","package":"money-math-kit","channels":["x402","mcp"],"endpoint":{"method":"POST","url":"https://agents.writerslogic.com/api/v1/locale-number","path":"/api/v1/locale-number","contentType":"application/json"},"price":{"amount":"0.005","currency":"USDC","network":"base","perCall":true,"failedCallsCharged":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":64},"locale":{"type":"string","pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8}){0,3}$","maxLength":35,"description":"BCP 47 tag whose CLDR separators apply, e.g. de-DE, en-IN, de-CH."},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Expected currency; resolves an ambiguous symbol and fails a contradicting one."}},"additionalProperties":false}}}},"resultSchema":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"items":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"status":{"type":"string","enum":["pass","fail","unknown","unsupported"]},"value":{"type":"string","description":"Canonical decimal, signed; only when the reading is unambiguous."},"negative":{"type":"boolean"},"style":{"type":"string","enum":["plain","leading-minus","trailing-minus","parentheses","plus"]},"readings":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"grouping":{"type":"string","enum":["none","western","indian"]},"groupSeparator":{"type":"string"},"decimalSeparator":{"type":"string"},"fitsCurrencyExponent":{"type":"boolean"}}}},"currencyToken":{"type":"string"},"currencyCandidates":{"type":"array","items":{"type":"string"}},"reason":{"type":"string"}}}},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"outputSchema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"items":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"status":{"type":"string","enum":["pass","fail","unknown","unsupported"]},"value":{"type":"string","description":"Canonical decimal, signed; only when the reading is unambiguous."},"negative":{"type":"boolean"},"style":{"type":"string","enum":["plain","leading-minus","trailing-minus","parentheses","plus"]},"readings":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"grouping":{"type":"string","enum":["none","western","indian"]},"groupSeparator":{"type":"string"},"decimalSeparator":{"type":"string"},"fitsCurrencyExponent":{"type":"boolean"}}}},"currencyToken":{"type":"string"},"currencyCandidates":{"type":"array","items":{"type":"string"}},"reason":{"type":"string"}}}},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]},"example":{"items":[{"text":"1.234,56","locale":"de-DE"},{"text":"1,00,000"},{"text":"1,234"},{"text":"(1,234.50)","currency":"USD"}]},"openapiOperation":{"operationId":"locale_number","summary":"Parse locale-formatted money text (1.234,56, 1,00,000, accounting parentheses) without guessing","description":"Parses up to 100 number or money strings such as \"1.234,56\", \"1,00,000\", \"(1,234.50)\", \"￥1,000\" or \"CHF 1'234.50\" into canonical decimal strings, for an agent reading amounts from documents, emails or tables. With a BCP 47 locale it applies that locale's CLDR separators (read from Intl.NumberFormat); without one it lists every valid reading and an ambiguous string such as \"1,234\" returns unknown with both (1234 and 1.234) instead of a guess. Understands leading and trailing minus, U+2212, accounting parentheses, non-ASCII digit systems and currency symbols or ISO codes (a symbol shared by several currencies, such as ¥ or $, is reported as ambiguous unless the caller names the currency). Does not convert currencies and does not round.\n\nPrice: 0.005 USDC on Base (x402).","x-x402-price-usdc":"0.005","x-x402-amount":"5000","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"x-audience":"business","x-sample-url":"https://agents.writerslogic.com/api/v1/samples/locale-number","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":64},"locale":{"type":"string","pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8}){0,3}$","maxLength":35,"description":"BCP 47 tag whose CLDR separators apply, e.g. de-DE, en-IN, de-CH."},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Expected currency; resolves an ambiguous symbol and fails a contradicting one."}},"additionalProperties":false}}}},"example":{"items":[{"text":"1.234,56","locale":"de-DE"},{"text":"1,00,000"},{"text":"1,234"},{"text":"(1,234.50)","currency":"USD"}]}}}},"responses":{"200":{"description":"Paid result with provenance","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"items":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"status":{"type":"string","enum":["pass","fail","unknown","unsupported"]},"value":{"type":"string","description":"Canonical decimal, signed; only when the reading is unambiguous."},"negative":{"type":"boolean"},"style":{"type":"string","enum":["plain","leading-minus","trailing-minus","parentheses","plus"]},"readings":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"grouping":{"type":"string","enum":["none","western","indian"]},"groupSeparator":{"type":"string"},"decimalSeparator":{"type":"string"},"fitsCurrencyExponent":{"type":"boolean"}}}},"currencyToken":{"type":"string"},"currencyCandidates":{"type":"array","items":{"type":"string"}},"reason":{"type":"string"}}}},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]}}}},"400":{"description":"Invalid request (no payment consumed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Invalid X-API-KEY","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"402":{"description":"Payment required or invalid","content":{"application/json":{"schema":{"type":"object","description":"x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string"},"resource":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}},"extensions":{"type":"object"}}}}}},"502":{"description":"Upstream failure; the payment is released or not settled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"links":{"docs":"https://agents.writerslogic.com/docs/locale-number/","docsJson":"https://agents.writerslogic.com/docs/locale-number.json","sample":"https://agents.writerslogic.com/api/v1/samples/locale-number","openapi":"https://agents.writerslogic.com/openapi.json","catalog":"https://agents.writerslogic.com/api/v1/catalog","verifyProvenance":"https://agents.writerslogic.com/api/v1/verify-provenance","index":"https://agents.writerslogic.com/docs/index.json"}}