{"id":"money-convert-at-rate","version":"1.0.0","description":"Convert an amount between two ISO 4217 currencies at a caller-supplied rate with explicit quote direction and rounding.","supported_operations":["convert 100 euros to dollars at 1.0843","EUR/USD 1.0843 how many dollars is 250 euros","convert USD to EUR when the rate is quoted EUR/USD","CFA franc to euro at 655.957","convert yen to euros at a given rate rounded half even","currency conversion with explicit rounding and output decimals","convert Danish krone at the ERM II central rate","apply an exchange rate to an invoice total"],"unsupported_operations":["looking up live or historical exchange rates","deriving a cross rate between two currencies","bank spreads, fees or margins on the rate","cryptocurrency or non-ISO units"],"semantics":["The rate is always a caller input (the tool has no rate data). rate_direction \"from_to\" means 1 unit of from = rate units of to (EUR/USD 1.0843: from EUR to USD); \"to_from\" means 1 unit of to = rate units of from, so the effective rate is exactly 1/rate. rate must be a positive decimal (zero is invalid_input, reason rate_zero).","from and to are 3-letter ASCII ISO 4217 codes (case-insensitive) that must be active and have a numeric minor unit; unknown, historic (DEM, HRK) and minor-unit-less codes (XAU, XDR) are unsupported_input. from equal to to is allowed. currency in the output is the to code upper-case.","result = amount x effective rate, rounded ONCE at the output scale with the required rounding mode; the amount is not pre-rounded to the from-currency scale and the inverted rate is never rounded. The output scale is the optional scale (0..18) or, by default, the minor unit of the to currency (JPY 0, USD 2, KWD 3).","The ten rounding modes act on the exact rational: half_even, half_up (ties away from zero), half_down, half_ceiling, half_floor, up, down, ceiling, floor, and unnecessary (an inexact result is not_computable, reason rounding_necessary). exact is true iff no rounding was needed.","rate_from_to reports the effective from_to rate as a canonical decimal without trailing zeros: exact when it terminates within 20 fraction digits (rate_exact true), otherwise rounded half_even to 20 digits (rate_exact false). The amount always uses the unrounded rate.","Decimal strings match ^-?(0|[1-9][0-9]*)(\\.[0-9]+)?$ with at most 60 digits and 40 fraction digits (invalid_input); a string over 62 characters is limit_exceeded, checked before the syntax. amount is signed and not precision-checked against the from currency.","Data is the pinned ISO 4217 snapshot named by data_version; no clock, locale or network.","Disclaimer: arithmetic calculation only; not financial, tax, legal, or investment advice."],"limits":{"max_decimal_chars":62,"max_decimal_digits":60,"max_fraction_digits":40,"max_scale":18,"max_rate_fraction_digits_reported":20},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["amount","from","to","rate","rate_direction","rounding"],"properties":{"amount":{"type":"string","minLength":1,"maxLength":62,"pattern":"^-?(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Amount in the `from` currency; any decimal (not restricted to the from-currency precision)."},"from":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Za-z]{3}$","description":"Source currency: active ISO 4217 code with a minor unit (case-insensitive)."},"to":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Za-z]{3}$","description":"Target currency: active ISO 4217 code with a minor unit (case-insensitive); its minor unit is the default output scale."},"rate":{"type":"string","minLength":1,"maxLength":62,"pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Positive decimal exchange rate as quoted; zero is invalid."},"rate_direction":{"type":"string","enum":["from_to","to_from"],"description":"from_to: 1 unit of `from` = rate units of `to`. to_from: 1 unit of `to` = rate units of `from`."},"rounding":{"type":"string","enum":["half_even","half_up","half_down","half_ceiling","half_floor","up","down","ceiling","floor","unnecessary"]},"scale":{"type":"integer","minimum":0,"maximum":18,"description":"Optional output fraction digits 0..18; default is the minor unit of `to`."}}},"output_schema":{"type":"object","additionalProperties":false,"required":["amount","currency","scale","exact","rate_from_to","rate_exact","data_version"],"properties":{"amount":{"type":"string","minLength":1,"maxLength":400,"pattern":"^-?(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"Converted amount at exactly `scale` fraction digits."},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"The `to` currency, upper-case."},"scale":{"type":"integer","minimum":0,"maximum":18},"exact":{"type":"boolean","description":"true when the product needed no rounding."},"rate_from_to":{"type":"string","minLength":1,"maxLength":400,"pattern":"^-?(0|[1-9][0-9]*)(\\.[0-9]+)?$","description":"The rate as used, as units of `to` per 1 `from`, without trailing zeros; at most 20 fraction digits."},"rate_exact":{"type":"boolean","description":"false when the effective from_to rate was rounded to 20 fraction digits for display (the amount always uses the unrounded rate)."},"data_version":{"type":"string","const":"iso4217-datasets-7cdc784-2026-07-27"}}},"examples":[{"input":{"amount":"100","from":"EUR","to":"USD","rate":"1.0843","rate_direction":"from_to","rounding":"half_even"},"output":{"amount":"108.43","currency":"USD","scale":2,"exact":true,"rate_from_to":"1.0843","rate_exact":true,"data_version":"iso4217-datasets-7cdc784-2026-07-27"}},{"input":{"amount":"655.957","from":"XOF","to":"EUR","rate":"655.957","rate_direction":"to_from","rounding":"half_even"},"output":{"amount":"1.00","currency":"EUR","scale":2,"exact":true,"rate_from_to":"0.00152449017237410379","rate_exact":false,"data_version":"iso4217-datasets-7cdc784-2026-07-27"}},{"input":{"amount":"100","from":"EUR","to":"XOF","rate":"655.957","rate_direction":"from_to","rounding":"half_even"},"output":{"amount":"65596","currency":"XOF","scale":0,"exact":false,"rate_from_to":"655.957","rate_exact":true,"data_version":"iso4217-datasets-7cdc784-2026-07-27"}}],"execute_url":"/v1/tools/money-convert-at-rate/versions/1.0.0/execute"}