Does this value survive conversion to another numeric or spreadsheet type? Range, precision, leading zeros, E notation
Takes raw JSON literals (as written, so 9007199254740993, 1e400, -0, "007" and 0.10 are judged on their digits, not on a parsed double) and target types (binary64, binary32, int8..int64, uint8..uint64, PostgreSQL numeric(p,s), Arrow decimal128/decimal256, Parquet decimal, Excel cell, pandas int64) and reports for each pair whether the value is exact, lossy (rounded, truncated, leading zeros or sign of zero lost, 15-digit Excel limit, date or formula coercion) or overflows, with the rule and the converted value. Also diagnoses identifier mangling: give before/after strings and it names what happened (leading zeros stripped, scientific notation, 15-digit rounding, date coercion, trimming, NFC/NFKC change, truncation). For agents moving data between JSON, databases, dataframes and spreadsheets. It does not parse files and does not convert; the converted value shown is what the target would hold.
What you get
Silent precision loss is only noticed after the data is used. 200 samples against 12 targets per $0.005 call.
Call it
Send the JSON body below to https://agents.writerslogic.com/api/v1/lossy-conversion. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.
curl -i -X POST https://agents.writerslogic.com/api/v1/lossy-conversion \
-H 'content-type: application/json' \
-d '{"samples":["9007199254740993","\"007\"","0.1","1e400"],"targets":["float64","int64","numeric(5,2)","excel-number"],"pairs":[{"before":"00123456789012345678","after":"1.23457E+17"}]}'
Input
| Field | Type | Required | Description |
|---|---|---|---|
samples | array<string; length 0..400>; max 200 items | no | Raw JSON scalar literals exactly as written, e.g. 9007199254740993, "007", 1e400, 0.10, null. |
targets | array<string; length 0..40>; max 12 items | no | Target types: float64, float32, int8, int16, int32, int64, uint8, uint16, uint32, uint64, numeric(p,s), decimal128(p,s), decimal256(p,s), parquet-decimal(p,s), excel-number, pandas-int64. |
pairs | array<object>; max 200 items | no | Identifier or text values before and after a round trip through another system. |
Example request body
{
"samples": [
"9007199254740993",
"\"007\"",
"0.1",
"1e400"
],
"targets": [
"float64",
"int64",
"numeric(5,2)",
"excel-number"
],
"pairs": [
{
"before": "00123456789012345678",
"after": "1.23457E+17"
}
]
}
Result
The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.
| Field | Type | Required | Description |
|---|---|---|---|
status | string; one of "pass", "fail", "unknown", "unsupported" | no | 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. |
conversions | array<object> | no | |
mangling | array<object> | no | |
summary | object | no | |
witnesses | array<object> | no | |
versions | object | no | Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile). |
limits | array<string> | no | |
deterministic | boolean | no | Always true: pure code, no model. |
Pay and connect
Available through: x402 (USDC on Base), MCP. MCP clients reach it through the data-contract-kit package.
Machine-readable
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent