{"openapi":"3.1.0","info":{"title":"x402 Arabic API","version":"1.1.0","description":"Arabic-native, Gulf-dialect aware Arabic API for agents: Arabic<->English translation (optional Web3 glossary), Arabic summarization, Saudi/Gulf dialect<->MSA conversion, i18n JSON localization, plus deterministic Umm al-Qura Hijri conversion, prayer times, Saudi holidays/working days, Arabic normalization and Arabic name transliteration. Keeps 0x addresses, numbers, URLs and code verbatim. Paid per request with x402 (USDC). Lost response: resend the IDENTICAL payment header to the same endpoint within 1 hour to get the same stored response (200, no second charge); any other payment reuse returns 409.","x-guidance":"Arabic-native, Gulf-dialect aware Arabic API; 0x addresses, URLs and numbers are kept verbatim and post-checked. POST JSON to /translate-ar ({text, direction?, glossary?:\"web3\"}), /summarize-ar ({text, length?}), /dialect-to-msa ({text, direction?:\"dialect-msa\"|\"msa-dialect\", dialect?:\"saudi\"|\"gulf\"}) or /localize-ar-json ({json}). Deterministic (no AI): /hijri-convert ({gregorian}|{hijri}), /prayer-times ({city}|{lat,lng,timezone}, date?, days?, method?), /saudi-calendar ({year}|{date}|{from,to}), /normalize-ar ({text, digits?...}), /transliterate-name ({text, direction?}), /token-risk ({address, chain?:\"base\"|\"arbitrum\"}, live read-only on-chain checks), /token-risk-pro (same + honeypot and buy/sell tax simulation). Free trial: POST /try/translate-ar (<= 200 chars, 5/IP/day). An unpaid request returns 402 with x402 v2 payment requirements (exact scheme, USDC) in the PAYMENT-REQUIRED header; sign them and resend the same request with the PAYMENT-SIGNATURE header. Max 4000 chars of text, 16 KiB body. /health, /openapi.json and /.well-known/x402 are free."},"servers":[{"url":"https://arabic-x402-api-base.motaz-crypto.workers.dev"}],"paths":{"/translate-ar":{"post":{"operationId":"translateArabic","summary":"Translate Arabic<->English (optional Web3 glossary)","tags":["arabic","gulf","saudi","web3","localization"],"description":"Use when: you need Arabic<->English translation (MSA or Saudi/Gulf dialect input) that keeps 0x addresses, numbers, URLs and code verbatim; set glossary=web3 for fixed Arabic Web3 terminology. Arabic<->English translation (auto-detects direction; understands Saudi/Gulf dialect input). Optional glossary=web3 enforces a fixed Arabic Web3 terminology list. Arabic-native, Gulf-dialect aware; keeps 0x addresses, URLs, numbers and code verbatim (regex post-check, retried once; address/URL/number loss is never charged).","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","decimals":6,"usd":0.01},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":4000,"description":"Text to translate (Arabic incl. Saudi/Gulf dialect, or English)."},"direction":{"type":"string","enum":["auto","ar-en","en-ar"],"default":"auto","description":"auto detects from script."},"glossary":{"type":"string","enum":["web3"],"description":"Apply a fixed Arabic Web3 terminology list (wallet, gas, smart contract, staking, bridge, DEX, seed phrase...). Reviewed by Nouf 2026-10-31; 91 terms with accepted Arabic forms."}}},"example":{"text":"Send 25 USDC to 0x5cb7Cc71c117675ef36102eaed7a5Aa78A29B29a and keep your seed phrase offline.","direction":"en-ar","glossary":"web3"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["translation","direction","model","checks"],"properties":{"translation":{"type":"string"},"direction":{"type":"string","enum":["ar-en","en-ar"]},"model":{"type":"string"},"checks":{"type":"object","description":"Post-check report. verbatim lists 0x addresses/URLs/numbers that were not preserved (empty when ok). Address/URL loss is never served (502, not charged).","properties":{"verbatim":{"type":"object","properties":{"ok":{"type":"boolean"},"addresses":{"type":"array","items":{"type":"string"}},"urls":{"type":"array","items":{"type":"string"}},"numbers":{"type":"array","items":{"type":"string"}}}},"retried":{"type":"boolean"},"glossary":{"type":"string"},"glossaryMissing":{"type":"array","items":{"type":"string"}}}}}},"example":{"translation":"أرسل 25 USDC إلى 0x5cb7Cc71c117675ef36102eaed7a5Aa78A29B29a واحتفظ بعبارة الاسترداد دون اتصال بالإنترنت.","direction":"en-ar","model":"@cf/qwen/qwen3-30b-a3b-fp8","checks":{"verbatim":{"ok":true,"addresses":[],"urls":[],"numbers":[]},"retried":false,"glossary":"web3","glossaryMissing":[]}}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Model error, or the model altered a 0x address/URL twice. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/summarize-ar":{"post":{"operationId":"summarizeArabic","summary":"Arabic summary of Arabic or English text","tags":["arabic","gulf","saudi","web3","localization"],"description":"Use when: you need a faithful Modern Standard Arabic summary of Arabic or English text at a chosen length, without invented numbers or addresses. Faithful Modern Standard Arabic summary (short/medium/long) of Arabic or English text. Arabic-native, Gulf-dialect aware; keeps 0x addresses, URLs, numbers and code verbatim (regex post-check, retried once; address/URL/number loss is never charged).","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"20000","decimals":6,"usd":0.02},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.02"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":4000,"description":"Arabic or English text to summarize."},"length":{"type":"string","enum":["short","medium","long"],"default":"medium","description":"short≈1-2 sentences, medium≈3-5, long≈1-2 paragraphs."}}},"example":{"text":"Base is an Ethereum L2 incubated by Coinbase...","length":"short"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["summary","length","model","checks"],"properties":{"summary":{"type":"string","description":"Arabic (MSA) summary."},"length":{"type":"string"},"model":{"type":"string"},"checks":{"type":"object","description":"Post-check report. verbatim lists 0x addresses/URLs/numbers that were not preserved (empty when ok). Address/URL loss is never served (502, not charged).","properties":{"verbatim":{"type":"object","properties":{"ok":{"type":"boolean"},"addresses":{"type":"array","items":{"type":"string"}},"urls":{"type":"array","items":{"type":"string"}},"numbers":{"type":"array","items":{"type":"string"}}}},"retried":{"type":"boolean"},"glossary":{"type":"string"},"glossaryMissing":{"type":"array","items":{"type":"string"}}}}}},"example":{"summary":"Base هي شبكة طبقة ثانية لإيثريوم طوّرتها Coinbase.","length":"short","model":"@cf/qwen/qwen3-30b-a3b-fp8","checks":{"verbatim":{"ok":true,"addresses":[],"urls":[],"numbers":[]},"retried":false}}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Model error, or the model altered a 0x address/URL twice. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/dialect-to-msa":{"post":{"operationId":"dialectToMsa","summary":"Saudi/Gulf dialect <-> Modern Standard Arabic","tags":["arabic","gulf","saudi","web3","localization"],"description":"Use when: you need Saudi/Gulf dialect Arabic rewritten as formal MSA (فصحى), or MSA rewritten as natural Saudi/Gulf dialect. Converts Saudi/Gulf dialect Arabic to Modern Standard Arabic (فصحى), or MSA to natural Saudi/Gulf dialect (direction param). Arabic-native, Gulf-dialect aware; keeps 0x addresses, URLs, numbers and code verbatim (regex post-check, retried once; address/URL/number loss is never charged).","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","decimals":6,"usd":0.01},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":4000,"description":"Arabic text: Saudi/Gulf dialect (dialect-msa) or MSA (msa-dialect)."},"direction":{"type":"string","enum":["dialect-msa","msa-dialect"],"default":"dialect-msa","description":"dialect-msa: Saudi/Gulf dialect -> فصحى. msa-dialect: فصحى -> natural Saudi/Gulf dialect."},"dialect":{"type":"string","enum":["saudi","gulf"],"default":"saudi","description":"Dialect of the input (dialect-msa) or target (msa-dialect)."}}},"example":{"text":"وش رايك نروح بكرة الساعة 5؟ ابي اشوف المحفظة الجديدة","direction":"dialect-msa","dialect":"saudi"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["text","direction","dialect","model","checks"],"properties":{"text":{"type":"string"},"direction":{"type":"string","enum":["dialect-msa","msa-dialect"]},"dialect":{"type":"string","enum":["saudi","gulf"]},"model":{"type":"string"},"checks":{"type":"object","description":"Post-check report. verbatim lists 0x addresses/URLs/numbers that were not preserved (empty when ok). Address/URL loss is never served (502, not charged).","properties":{"verbatim":{"type":"object","properties":{"ok":{"type":"boolean"},"addresses":{"type":"array","items":{"type":"string"}},"urls":{"type":"array","items":{"type":"string"}},"numbers":{"type":"array","items":{"type":"string"}}}},"retried":{"type":"boolean"},"glossary":{"type":"string"},"glossaryMissing":{"type":"array","items":{"type":"string"}}}}}},"example":{"text":"ما رأيك أن نذهب غدًا الساعة 5؟ أريد أن أرى المحفظة الجديدة.","direction":"dialect-msa","dialect":"saudi","model":"@cf/qwen/qwen3-30b-a3b-fp8","checks":{"verbatim":{"ok":true,"addresses":[],"urls":[],"numbers":[]},"retried":false}}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Model error, or the model altered a 0x address/URL twice. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/localize-ar-json":{"post":{"operationId":"localizeArabicJson","summary":"Localize an i18n JSON object to Arabic","tags":["arabic","gulf","saudi","web3","localization"],"description":"Use when: you need an app's i18n JSON localized to Arabic with keys unchanged and placeholders ({name}, {{count}}, %s, ICU plurals, HTML tags) validated per string. Localizes an i18n JSON object to Arabic: keys unchanged; placeholders ({name}, {{count}}, %s, %d, ICU plural/select, HTML tags) kept verbatim and validated per string, retried once, else the source string is returned for that key. Max 200 strings / 8000 chars. Arabic-native, Gulf-dialect aware; keeps 0x addresses, URLs, numbers and code verbatim (regex post-check, retried once; address/URL/number loss is never charged).","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"20000","decimals":6,"usd":0.02},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.02"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["json"],"properties":{"json":{"type":"object","description":"i18n resource object (nested allowed, depth <= 8). Max 200 string values and 8000 characters across all strings. Keys are never changed; non-string values pass through.","additionalProperties":true}}},"example":{"json":{"greeting":"Hello, {name}!","items":"{count, plural, one {# item} other {# items}}","cta":"Click <b>Connect wallet</b>","fee":"Fee: %s USDC"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["json","localized","total","model","checks"],"properties":{"json":{"type":"object","description":"Same key set as the input, string values localized to Arabic.","additionalProperties":true},"checks":{"type":"object","required":["fallbackKeys"],"properties":{"fallbackKeys":{"type":"array","items":{"type":"string"},"description":"JSON Pointers of strings that failed validation twice and were returned as the source string (at most 20% of strings; above that the call fails with 502 and is not charged)."},"fallbackRatio":{"type":"number"},"retried":{"type":"integer"}}},"localized":{"type":"integer"},"total":{"type":"integer"},"model":{"type":"string"}}},"example":{"json":{"greeting":"مرحبًا، {name}!","items":"{count, plural, one {# عنصر} other {# عناصر}}","cta":"انقر على <b>ربط المحفظة</b>","fee":"الرسوم: %s USDC"},"localized":4,"total":4,"model":"@cf/qwen/qwen3-30b-a3b-fp8","checks":{"fallbackKeys":[],"fallbackRatio":0,"retried":0}}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Model error, or the model altered a 0x address/URL twice. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/hijri-convert":{"post":{"operationId":"hijriConvert","summary":"Hijri (Umm al-Qura) <-> Gregorian date conversion","tags":["arabic","hijri","calendar","islamic","saudi"],"description":"Use when: you need to convert a Gregorian date to the official Saudi Umm al-Qura Hijri date (or back), with Arabic month/weekday names and the Hijri month length. Hijri<->Gregorian conversion using the official Saudi Umm al-Qura calendar (ICU islamic-umalqura tables), 1938-01-01..2076-12-31. Returns Arabic + English month and weekday names, formatted Arabic date and month length. Deterministic (no AI model): same input -> same output, millisecond latency.","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","decimals":6,"usd":0.002},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"gregorian":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Gregorian date YYYY-MM-DD (1938-01-01..2076-12-31). Converts to Umm al-Qura Hijri."},"hijri":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Umm al-Qura Hijri date YYYY-MM-DD (years 1357..1499). Converts to Gregorian."}},"description":"Provide exactly one of gregorian or hijri."},"example":{"gregorian":"2026-02-18"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["gregorian","hijri","calendar"],"properties":{"gregorian":{"type":"string"},"weekday":{"type":"string"},"weekdayAr":{"type":"string"},"hijri":{"type":"object","properties":{"year":{"type":"integer"},"month":{"type":"integer"},"day":{"type":"integer"},"monthName":{"type":"string"},"monthNameAr":{"type":"string"},"iso":{"type":"string"},"formattedAr":{"type":"string"},"monthLength":{"type":"integer"}}},"calendar":{"type":"string"},"note":{"type":"string"}}},"example":{"gregorian":"2026-02-18","weekday":"Wednesday","weekdayAr":"الأربعاء","hijri":{"year":1447,"month":9,"day":1,"monthName":"Ramadan","monthNameAr":"رمضان","iso":"1447-09-01","formattedAr":"1 رمضان 1447هـ","monthLength":30},"calendar":"islamic-umalqura"}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/prayer-times":{"post":{"operationId":"prayerTimes","summary":"Islamic prayer times for a city or coordinates","tags":["islamic","prayer-times","arabic","saudi","gulf"],"description":"Use when: you need Fajr, sunrise, Dhuhr, Asr, Maghrib and Isha times for a Gulf/Arab city or any lat/lng + IANA timezone, for up to 31 days. Prayer times (Fajr, sunrise, Dhuhr, Asr, Maghrib, Isha) by the standard astronomical algorithm; methods umm_al_qura, mwl, isna, egypt, karachi, dubai, qatar, kuwait (Umm al-Qura: Fajr 18.5°, Isha Maghrib+90 min, +120 in Ramadan). 27 built-in cities (Riyadh, Jeddah, Makkah, Madinah, Dubai, Doha, Kuwait, Cairo...) or lat/lng+timezone; up to 31 days per call. Matches Umm al-Qura published Riyadh times within ±1 min. Deterministic (no AI model): same input -> same output, millisecond latency.","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"3000","decimals":6,"usd":0.003},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"city":{"type":"string","enum":["riyadh","jeddah","makkah","madinah","dammam","khobar","taif","tabuk","abha","buraydah","hail","dubai","abu_dhabi","doha","kuwait_city","manama","muscat","cairo","amman","baghdad","beirut","casablanca","istanbul","london","jakarta","karachi","new_york"],"description":"Built-in city (coordinates, timezone and local method preset). Or give lat+lng+timezone."},"lat":{"type":"number","minimum":-65,"maximum":65},"lng":{"type":"number","minimum":-180,"maximum":180},"timezone":{"type":"string","description":"IANA zone, e.g. Asia/Riyadh (required with lat/lng)."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Gregorian date (default: today in the location's timezone)."},"days":{"type":"integer","minimum":1,"maximum":31,"default":1,"description":"Number of consecutive days (max 31)."},"method":{"type":"string","enum":["umm_al_qura","mwl","isna","egypt","karachi","dubai","qatar","kuwait"],"description":"Calculation method (default: city preset, else umm_al_qura)."},"asr":{"type":"string","enum":["standard","hanafi"],"default":"standard"}}},"example":{"city":"riyadh","date":"2026-11-01"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["location","method","days"],"properties":{"location":{"type":"object","properties":{"name":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"timezone":{"type":"string"}}},"method":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"asr":{"type":"string"}}},"days":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"hijri":{"type":"string"},"utcOffset":{"type":"number"},"times":{"type":"object","properties":{"fajr":{"type":["string","null"],"description":"HH:MM local time"},"sunrise":{"type":["string","null"],"description":"HH:MM local time"},"dhuhr":{"type":["string","null"],"description":"HH:MM local time"},"asr":{"type":["string","null"],"description":"HH:MM local time"},"maghrib":{"type":["string","null"],"description":"HH:MM local time"},"isha":{"type":["string","null"],"description":"HH:MM local time"}}}}}}}},"example":{"location":{"name":"Riyadh","lat":24.7136,"lng":46.6753,"timezone":"Asia/Riyadh"},"method":{"id":"umm_al_qura","name":"Umm al-Qura University, Makkah (Saudi official)","asr":"standard"},"days":[{"date":"2026-11-01","hijri":"1448-05-21","utcOffset":3,"times":{"fajr":"04:41","sunrise":"06:00","dhuhr":"11:37","asr":"14:49","maghrib":"17:13","isha":"18:43"}}]}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/saudi-calendar":{"post":{"operationId":"saudiCalendar","summary":"Saudi public holidays, Islamic dates and working days","tags":["saudi","holidays","calendar","working-days","hijri"],"description":"Use when: you need Saudi public holidays for a year, whether a date is a Saudi working day, or the number of Saudi working days between two dates (deadlines, SLAs, delivery estimates, payroll). Saudi Arabia calendar: public holidays (Founding Day 22 Feb, National Day 23 Sep, Eid al-Fitr and Eid al-Adha per Labor Law private-sector rules) and Islamic observances (Ramadan, Hijri New Year, Ashura, Arafah) computed from Umm al-Qura; Fri+Sat weekend; working-day check and working-day count over a range. Eid dates are Umm al-Qura estimates; the official announcement follows moon sighting. Deterministic (no AI model): same input -> same output, millisecond latency.","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"3000","decimals":6,"usd":0.003},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"year":{"type":"integer","minimum":1938,"maximum":2076,"description":"Gregorian year: list Saudi public holidays and Islamic observances."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Check one date: weekday, Hijri date, holiday, working day?"},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start of a range (with to): count Saudi working days (Fri+Sat weekend, public holidays excluded). Max 3660 days."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"description":"Provide year, date, or from+to (any combination)."},"example":{"date":"2026-09-23"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["country","weekend"],"properties":{"country":{"type":"string"},"weekend":{"type":"array","items":{"type":"string"}},"holidays":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"nameAr":{"type":"string"},"date":{"type":"string"},"endDate":{"type":"string"},"days":{"type":"integer"},"type":{"type":"string","enum":["public_holiday","observance"]},"basis":{"type":"string"},"hijri":{"type":"string"}}}},"date":{"type":"object","properties":{"gregorian":{"type":"string"},"weekday":{"type":"string"},"weekdayAr":{"type":"string"},"hijri":{"type":"object","properties":{"year":{"type":"integer"},"month":{"type":"integer"},"day":{"type":"integer"},"monthName":{"type":"string"},"monthNameAr":{"type":"string"},"iso":{"type":"string"},"formattedAr":{"type":"string"},"monthLength":{"type":"integer"}}},"isWorkingDay":{"type":"boolean"},"holidays":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"nameAr":{"type":"string"},"date":{"type":"string"},"endDate":{"type":"string"},"days":{"type":"integer"},"type":{"type":"string","enum":["public_holiday","observance"]},"basis":{"type":"string"},"hijri":{"type":"string"}}}}}},"range":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"workingDays":{"type":"integer"},"weekendDays":{"type":"integer"},"holidayDays":{"type":"integer"},"totalDays":{"type":"integer"}}},"note":{"type":"string"}}},"example":{"country":"SA","weekend":["Friday","Saturday"],"date":{"gregorian":"2026-09-23","weekday":"Wednesday","weekdayAr":"الأربعاء","hijri":{"year":1448,"month":4,"day":12,"monthName":"Rabi al-Thani","monthNameAr":"ربيع الآخر","iso":"1448-04-12","formattedAr":"12 ربيع الآخر 1448هـ","monthLength":30},"isWorkingDay":false,"holidays":[{"name":"Saudi National Day","nameAr":"اليوم الوطني","date":"2026-09-23","endDate":"2026-09-23","days":1,"type":"public_holiday","basis":"Fixed 23 September"}]}}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/normalize-ar":{"post":{"operationId":"normalizeArabic","summary":"Arabic text normalization (tashkeel, tatweel, letter variants, digits)","tags":["arabic","nlp","normalization","search","text"],"description":"Use when: you need clean Arabic text for search, matching, deduplication or embeddings: remove diacritics (tashkeel) and tatweel, unify alef/yaa/taa marbuta/hamza forms, convert Arabic-Indic digits. Arabic text normalization: removes tashkeel (harakat, Quranic marks) and tatweel, unifies أ/إ/آ/ٱ->ا and optionally ى->ي, ة->ه, ؤ/ئ, converts ٠-٩/۰-۹ <-> 0-9 and Arabic punctuation, strips zero-width/bidi characters, and returns an aggressive searchKey. Up to 4000 chars. Deterministic (no AI model): same input -> same output, millisecond latency.","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","decimals":6,"usd":0.001},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":4000},"removeTashkeel":{"type":"boolean","default":true},"removeTatweel":{"type":"boolean","default":true},"normalizeAlef":{"type":"boolean","default":true,"description":"أ إ آ ٱ -> ا"},"normalizeYaa":{"type":"boolean","default":false,"description":"ى -> ي"},"normalizeTaaMarbuta":{"type":"boolean","default":false,"description":"ة -> ه"},"normalizeHamza":{"type":"boolean","default":false,"description":"ؤ -> و, ئ -> ي"},"digits":{"type":"string","enum":["keep","latin","arabic"],"default":"keep","description":"Convert ٠-٩/۰-۹ <-> 0-9"},"punctuation":{"type":"string","enum":["keep","latin","arabic"],"default":"keep","description":"، ؛ ؟ <-> , ; ?"},"collapseWhitespace":{"type":"boolean","default":true,"description":"Also strips zero-width and bidi control characters."}}},"example":{"text":"السَّلَامُ عَلَيْكُمْ ـــ يا أحمد، السعر ١٢٣","digits":"latin"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["text","searchKey","stats"],"properties":{"text":{"type":"string"},"searchKey":{"type":"string","description":"Aggressive key for search/dedup/matching (all normalizations, latin digits, no punctuation)."},"stats":{"type":"object","additionalProperties":{"type":"integer"}}}},"example":{"text":"السلام عليكم يا احمد، السعر 123","searchKey":"السلام عليكم يا احمد السعر 123","stats":{"tashkeelRemoved":9,"tatweelRemoved":3,"lettersNormalized":1,"digitsConverted":3}}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/transliterate-name":{"post":{"operationId":"transliterateName","summary":"Arabic person-name transliteration (Arabic <-> Latin)","tags":["arabic","names","transliteration","kyc","saudi"],"description":"Use when: you need the conventional Latin spelling of an Arabic (Saudi/Gulf) person name, or the Arabic script of a Latin-spelled Arabic name, e.g. for KYC, CRM matching, forms or search. Arabic person-name transliteration both ways. A curated dictionary of 106 common Saudi/Gulf given and family names returns passport-style spellings plus known variants (Mohammed/Muhammad/Mohamed...); other words fall back to rule-based transliteration and are marked method=rule. Handles عبد ال... compounds, آل, bin/bint. Deterministic (no AI model): same input -> same output, millisecond latency.","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","decimals":6,"usd":0.002},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":200,"description":"Person name(s), Arabic or Latin script."},"direction":{"type":"string","enum":["auto","ar-en","en-ar"],"default":"auto"}}},"example":{"text":"معتز محمد العتيبي","direction":"ar-en"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["output","direction","tokens","confidence"],"properties":{"output":{"type":"string"},"direction":{"type":"string"},"confidence":{"type":"number","description":"Share of tokens matched in the curated name dictionary (0..1)."},"tokens":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string"},"output":{"type":"string"},"method":{"type":"string","enum":["dictionary","rule"]},"alternatives":{"type":"array","items":{"type":"string"}}}}}}},"example":{"output":"Motaz Mohammed Al-Otaibi","direction":"ar-en","tokens":[{"input":"معتز","output":"Motaz","method":"dictionary","alternatives":["Moataz","Mutaz"]},{"input":"محمد","output":"Mohammed","method":"dictionary","alternatives":["Muhammad","Mohammad","Mohamed","Muhammed","Mohamad"]},{"input":"العتيبي","output":"Al-Otaibi","method":"dictionary","alternatives":["Alotaibi","Al Otaibi","Otaibi"]}],"confidence":1}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/token-risk":{"post":{"operationId":"tokenRisk","summary":"ERC-20 token risk check (Base / Arbitrum), reasons in Arabic + English","tags":["crypto","token-risk","security","base","arbitrum","arabic"],"description":"Use when: before buying, listing or accepting an ERC-20 on Base or Arbitrum, you need a quick rug/control-risk score: owner privileges (mint, blacklist, fee, pause, trading switch), upgradeable proxy, owner supply share and DEX liquidity, with bilingual reasons. Live read-only on-chain token risk check for Base and Arbitrum (eth_call / getCode / storage at the latest block; no transactions). Detects upgradeable proxies (EIP-1967 and legacy slots), owner/renounced status, privileged functions in bytecode (mint, blacklist, fee setters, max-tx, trading switch, pause), owner and contract supply share, burned share, and Uniswap v2/v3 + Aerodrome liquidity against WETH/USDC in USD. Returns a 0-100 score, level and reasons in Arabic and English. Deterministic heuristics (no AI model); no sell simulation. Not charged if the chain RPC is unavailable.","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"20000","decimals":6,"usd":0.02},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.02"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"additionalProperties":false,"properties":{"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"ERC-20 token contract address"},"chain":{"type":"string","enum":["base","arbitrum"],"default":"base"}}},"example":{"address":"0x532f27101965dd16442E59d40670FaF5eBB142E4","chain":"base"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["chain","address","score","level","reasons"],"properties":{"chain":{"type":"string"},"chainId":{"type":"number"},"address":{"type":"string"},"token":{"type":"object","properties":{"name":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"number"},"totalSupply":{"type":"string"}}},"score":{"type":"number","minimum":0,"maximum":100,"description":"0 = lowest risk, 100 = highest"},"level":{"type":"string","enum":["low","medium","high","critical"]},"levelAr":{"type":"string"},"reasons":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"severity":{"type":"string"},"en":{"type":"string"},"ar":{"type":"string"}}}},"ownership":{"type":"object","properties":{"owner":{"type":"string"},"renounced":{"type":"boolean"},"ownerSupplyPct":{"type":"number"},"privileges":{"type":"array","items":{"type":"string"}}}},"proxy":{"type":"object","properties":{"upgradeable":{"type":"boolean"},"implementation":{"type":"string"}}},"supply":{"type":"object","properties":{"burnedPct":{"type":"number"},"contractHeldPct":{"type":"number"},"inPoolsPct":{"type":"number"}}},"liquidity":{"type":"object","properties":{"quoteSideUsd":{"type":"number"},"ethUsd":{"type":"number"},"pools":{"type":"array","items":{"type":"object","properties":{"dex":{"type":"string"},"quote":{"type":"string"},"address":{"type":"string"},"quoteReserveUsd":{"type":"number"}}}}}},"disclaimer":{"type":"object","properties":{"en":{"type":"string"},"ar":{"type":"string"}}}}},"example":{"chain":"base","chainId":8453,"address":"0x532f27101965dd16442e59d40670faf5ebb142e4","token":{"name":"Brett","symbol":"BRETT","decimals":18,"totalSupply":"9999997544340006294456944163"},"score":3,"level":"low","levelAr":"منخفض","reasons":[{"code":"owner_renounced","severity":"info","en":"Ownership renounced (owner is zero/dead address)","ar":"تم التخلي عن الملكية (المالك عنوان صفري/محروق)"},{"code":"fn_trading","severity":"low","en":"Trading on/off switch present (owner renounced: lower risk)","ar":"يوجد مفتاح لتفعيل/إيقاف التداول (الملكية متخلّى عنها: خطر أقل)"},{"code":"liquidity_ok","severity":"info","en":"Liquidity ~$718047 quote-side","ar":"السيولة حوالي 718047$"}],"ownership":{"owner":"0x0000000000000000000000000000000000000000","renounced":true,"ownerSupplyPct":0,"privileges":["trading"]},"proxy":{"upgradeable":false,"implementation":null},"supply":{"burnedPct":0.9041,"contractHeldPct":0.2859,"inPoolsPct":1.0438},"liquidity":{"quoteSideUsd":718047,"ethUsd":2268.68,"pools":[{"dex":"uniswap-v2","quote":"WETH","address":"0xb34380ba6a17b022782c7fc91e319c10c168fb98","quoteReserveUsd":327},{"dex":"uniswap-v3-500","quote":"WETH","address":"0x36a46dff597c5a444bbc521d26787f57867d2214","quoteReserveUsd":395}]},"disclaimer":{"en":"Heuristic read-only on-chain checks at the latest block (bytecode selectors, ownership, proxy, DEX pools vs WETH/USDC). No sell simulation. No full holder list; not financial advice.","ar":"فحوص تقديرية للقراءة فقط من السلسلة (دوال العقد، الملكية، الوكيل، مجمعات السيولة). لا تتضمن محاكاة بيع ولا قائمة كاملة بالحاملين؛ ليست نصيحة مالية."}}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/token-risk-pro":{"post":{"operationId":"tokenRiskPro","summary":"ERC-20 risk check + honeypot / buy-sell tax simulation (Base / Arbitrum), Arabic + English","tags":["crypto","token-risk","honeypot","sell-tax","security","base","arbitrum","arabic"],"description":"Use when: before buying an ERC-20 on Base or Arbitrum you need to know if it can actually be sold (honeypot) and the real buy/sell tax, plus the full /token-risk control-risk score. Everything in /token-risk plus a buy-then-sell simulation: a helper contract is injected with eth_call state overrides (simulation only: no transaction, no signing, no funds) and swaps a small ETH amount through the token's deepest WETH pool (Uniswap v2, Aerodrome volatile or Uniswap v3), then sells it back. Returns sellPossible, buyTaxPct, sellTaxPct and status (ok / honeypot / buy_failed / unavailable). Tokens with only USDC or other-quoted pools return status=unavailable. Deterministic heuristics (no AI model). Same-block anti-bot rules can cause false sell failures. Not charged if the chain RPC is unavailable.","x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"50000","decimals":6,"usd":0.05},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.05"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"additionalProperties":false,"properties":{"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"ERC-20 token contract address"},"chain":{"type":"string","enum":["base","arbitrum"],"default":"base"}}},"example":{"address":"0xbcff5af58099311135f183f1230f5f16bfacf464","chain":"base"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["chain","address","score","level","reasons","simulation"],"properties":{"chain":{"type":"string"},"chainId":{"type":"number"},"address":{"type":"string"},"token":{"type":"object","properties":{"name":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"number"},"totalSupply":{"type":"string"}}},"score":{"type":"number","minimum":0,"maximum":100,"description":"0 = lowest risk, 100 = highest"},"level":{"type":"string","enum":["low","medium","high","critical"]},"levelAr":{"type":"string"},"reasons":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"severity":{"type":"string"},"en":{"type":"string"},"ar":{"type":"string"}}}},"ownership":{"type":"object","properties":{"owner":{"type":"string"},"renounced":{"type":"boolean"},"ownerSupplyPct":{"type":"number"},"privileges":{"type":"array","items":{"type":"string"}}}},"proxy":{"type":"object","properties":{"upgradeable":{"type":"boolean"},"implementation":{"type":"string"}}},"supply":{"type":"object","properties":{"burnedPct":{"type":"number"},"contractHeldPct":{"type":"number"},"inPoolsPct":{"type":"number"}}},"liquidity":{"type":"object","properties":{"quoteSideUsd":{"type":"number"},"ethUsd":{"type":"number"},"pools":{"type":"array","items":{"type":"object","properties":{"dex":{"type":"string"},"quote":{"type":"string"},"address":{"type":"string"},"quoteReserveUsd":{"type":"number"}}}}}},"disclaimer":{"type":"object","properties":{"en":{"type":"string"},"ar":{"type":"string"}}},"simulation":{"type":"object","description":"Buy+sell eth_call simulation against the deepest WETH pool (state overrides, no transaction)","properties":{"status":{"type":"string","enum":["ok","honeypot","buy_failed","unavailable","error"]},"sellPossible":{"type":["boolean","null"]},"buyTaxPct":{"type":["number","null"]},"sellTaxPct":{"type":["number","null"]},"pool":{"type":"object"},"buyError":{"type":"string"},"sellError":{"type":"string"},"note":{"type":"string"},"reason":{"type":"string"},"reasonAr":{"type":"string"}}}}},"example":{"chain":"base","chainId":8453,"address":"0xbcff5af58099311135f183f1230f5f16bfacf464","token":{"name":"Siren","symbol":"SIREN","decimals":18,"totalSupply":"1000000000000000000000000000"},"score":20,"level":"low","levelAr":"منخفض","reasons":[{"code":"high_tax","severity":"low","en":"Simulated sell tax 5% (buy 0%)","ar":"ضريبة البيع في المحاكاة 5% (الشراء 0%)"}],"ownership":{"owner":"0x0000000000000000000000000000000000000000","renounced":true,"ownerSupplyPct":0,"privileges":["trading"]},"proxy":{"upgradeable":false,"implementation":null},"supply":{"burnedPct":0.9041,"contractHeldPct":0.2859,"inPoolsPct":1.0438},"liquidity":{"quoteSideUsd":718047,"ethUsd":2268.68,"pools":[{"dex":"uniswap-v2","quote":"WETH","address":"0xb34380ba6a17b022782c7fc91e319c10c168fb98","quoteReserveUsd":327},{"dex":"uniswap-v3-500","quote":"WETH","address":"0x36a46dff597c5a444bbc521d26787f57867d2214","quoteReserveUsd":395}]},"disclaimer":{"en":"Heuristic read-only on-chain checks at the latest block (bytecode selectors, ownership, proxy, DEX pools vs WETH/USDC). No sell simulation. No full holder list; not financial advice.","ar":"فحوص تقديرية للقراءة فقط من السلسلة (دوال العقد، الملكية، الوكيل، مجمعات السيولة). لا تتضمن محاكاة بيع ولا قائمة كاملة بالحاملين؛ ليست نصيحة مالية."},"simulation":{"pool":{"dex":"uniswap-v2","address":"0x...","ethIn":"0.01"},"buyOk":true,"sellOk":true,"sellPossible":true,"buyTaxPct":0,"sellTaxPct":5,"status":"ok"}}}}},"400":{"description":"Invalid JSON or input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. x402 v2 requirements in the PAYMENT-REQUIRED header (base64 JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Payment authorization already used (replay).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body > 16 KiB (32 KiB for /localize-ar-json), text > 4000 chars, or > 200 strings / 8000 chars for /localize-ar-json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (per IP or per payer).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Daily capacity reached or payments not configured. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/try/translate-ar":{"post":{"operationId":"tryTranslateArabic","security":[],"tags":["arabic","gulf","saudi","web3","localization"],"summary":"Free trial translation (short text)","description":"Use when: you want to try the translation quality for free before paying. Max 200 chars, 5 calls per IP per UTC day and a global daily cap; 429 above the limits. No payment, no glossary.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":200,"description":"Free trial: up to 200 characters."},"direction":{"type":"string","enum":["auto","ar-en","en-ar"],"default":"auto"}}},"example":{"text":"مرحبا بالعالم","direction":"auto"}}}},"responses":{"200":{"description":"Translation","content":{"application/json":{"schema":{"type":"object","required":["translation","direction","model","trial"],"properties":{"translation":{"type":"string"},"direction":{"type":"string"},"model":{"type":"string"},"trial":{"type":"boolean"},"checks":{"type":"object","description":"Post-check report. verbatim lists 0x addresses/URLs/numbers that were not preserved (empty when ok). Address/URL loss is never served (502, not charged).","properties":{"verbatim":{"type":"object","properties":{"ok":{"type":"boolean"},"addresses":{"type":"array","items":{"type":"string"}},"urls":{"type":"array","items":{"type":"string"}},"numbers":{"type":"array","items":{"type":"string"}}}},"retried":{"type":"boolean"},"glossary":{"type":"string"},"glossaryMissing":{"type":"array","items":{"type":"string"}}}},"paid":{"type":"string"}}},"example":{"translation":"Hello, world","direction":"ar-en","model":"@cf/qwen/qwen3-30b-a3b-fp8","trial":true}}}},"400":{"description":"Invalid input."},"413":{"description":"Text > 200 chars."},"429":{"description":"Free trial limit reached (per IP or global)."},"502":{"description":"Model error."}}}},"/health":{"get":{"operationId":"health","security":[],"description":"Use when: checking liveness. Free.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/openapi.json":{"get":{"operationId":"openapi","security":[],"description":"Use when: discovering this API's contract. Free.","responses":{"200":{"description":"This document","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/.well-known/x402":{"get":{"operationId":"x402Manifest","security":[],"description":"Use when: listing paid resources and prices. Free, informational.","responses":{"200":{"description":"Manifest","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"detail":{"type":"string"}}}}}}