{"name":"io.github.amirjld/parsi-mcp","slug":"amirjld-parsi-mcp","title":"Parsi MCP","description":"Offline Persian/Iran tools: Jalali dates, validators, Persian text, price inputs, RTL frontend.","url":"https://mcp.market/server/amirjld-parsi-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":31,"stars":5,"forks":0,"downloads_week":41,"last_push_at":"2026-10-18T13:19:28.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/amirjld/parsi-mcp","website":null,"version":"0.3.0","remotes":[],"packages":[{"registryType":"npm","identifier":"parsi-mcp","version":"0.3.0","transport":{"type":"stdio"}}],"tools":[{"name":"bank_from_card","description":"Identify the Iranian bank from a card number (first 6 digits / BIN).","write_action":false,"price_micros":0,"input_schema":null},{"name":"bank_from_sheba","description":"Identify the Iranian bank from a Sheba (IBAN) number (3-digit bank code).","write_action":false,"price_micros":0,"input_schema":null},{"name":"calculate_vat","description":"VAT helper. Rate (percent) must be supplied. mode 'exclusive' = amount excludes tax, 'inclusive' = amount includes tax.","write_action":false,"price_micros":0,"input_schema":null},{"name":"convert_rial_toman","description":"Convert between rial and toman (1 toman = 10 rial).","write_action":false,"price_micros":0,"input_schema":null},{"name":"csv_export_safe","description":"Build Excel/Sheets-safe CSV from rows: UTF-8 BOM, correct quoting, Persian digits in numeric cells converted to ASCII so Excel treats them as numbers, formula-injection guard, warnings for digit strings Excel may corrupt.","write_action":false,"price_micros":0,"input_schema":null},{"name":"decimal_to_persian_words","description":"Decimals, percents and fractions in Persian words: '12.5' -> 'دوازده ممیز پنج دهم', percent adds درصد, fraction '3/4' -> 'سه چهارم'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"detect_text_direction","description":"Detect text direction (first-strong and dominant script, mixed flag) and optionally wrap the text bidi-safely: Unicode isolates (FSI/RLI/LRI) or HTML <bdi> / dir=auto. Use for usernames, product names and mixed Persian/English strings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fix_keyboard_layout","description":"Fix text typed with the wrong keyboard layout using the standard Iranian layout (ISIRI 9147): 'sghl' -> 'سلام', and Persian typed on English back to Latin. direction 'auto' picks by script.","write_action":false,"price_micros":0,"input_schema":null},{"name":"format_iran_phone","description":"Display formats for an Iranian mobile (0912 345 6789, +98 912 345 6789, E.164) or landline (021-12345678). Accepts Persian digits, +98, 0098.","write_action":false,"price_micros":0,"input_schema":null},{"name":"format_jalali_date","description":"Format a Jalali date. Tokens: YYYY YY MMMM MM M DD D dddd.","write_action":false,"price_micros":0,"input_schema":null},{"name":"format_number_grouped","description":"Group digits in threes (200000 -> 200,000 or ۲۰۰٬۰۰۰). Accepts Persian/Arabic digits.","write_action":false,"price_micros":0,"input_schema":null},{"name":"format_short_number","description":"Short Persian number form: 2500000 -> '۲٫۵ میلیون', 1200 -> '۱٫۲ هزار' (style 'latin' gives 2.5M). Optional unit like تومان.","write_action":false,"price_micros":0,"input_schema":null},{"name":"gregorian_to_jalali","description":"Convert a Gregorian date to the Jalali (Persian) calendar.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iran_business_days","description":"Business-day helper: op 'is_business_day', 'add' (days may be negative) or 'count' (days after 'date' up to and including 'to'). Weekend is Friday (optionally Thursday too); supply holidays yourself or enable the fixed solar ones.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iran_holidays","description":"Fixed solar-calendar public holidays of a Jalali year (Nowruz 1-4 Farvardin, 12-13 Farvardin, 14-15 Khordad, 22 Bahman, 29 Esfand) with Gregorian dates, plus the Hijri-based holiday list WITHOUT dates. Lunar holidays shift yearly and need the official annual calendar.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iran_provinces","description":"List Iran's 31 provinces with ISO 3166-2 code, Persian/English names and capital. Optional query matches Persian or English names (letter-variant tolerant).","write_action":false,"price_micros":0,"input_schema":null},{"name":"jalali_add","description":"Add days, months and/or years to a Jalali date (month overflow clamps to month length).","write_action":false,"price_micros":0,"input_schema":null},{"name":"jalali_age","description":"Age (years, months, days, total days) from a Jalali birth date. asOf defaults to today.","write_action":false,"price_micros":0,"input_schema":null},{"name":"jalali_diff","description":"Days between two Jalali dates plus a Persian relative description.","write_action":false,"price_micros":0,"input_schema":null},{"name":"jalali_month_grid","description":"Calendar grid for a Jalali month (for date-pickers): weeks of 7 cells with day number, Gregorian date and Friday flag; null cells pad the edges. Default week starts Saturday.","write_action":false,"price_micros":0,"input_schema":null},{"name":"jalali_period_range","description":"Start/end (Jalali and Gregorian) of the Jalali day, week (Saturday-Friday), month, quarter (season) or year containing a date. Use for reports and finance periods instead of Gregorian date libraries.","write_action":false,"price_micros":0,"input_schema":null},{"name":"jalali_to_gregorian","description":"Convert a Jalali (Persian) date to the Gregorian calendar.","write_action":false,"price_micros":0,"input_schema":null},{"name":"jalali_year_info","description":"Leap-year status and month length for a Jalali year.","write_action":false,"price_micros":0,"input_schema":null},{"name":"landline_province","description":"Find the province of an Iranian landline number from its area code.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mobile_operator","description":"Detect the mobile operator (MCI/Irancell/Rightel) of an Iranian mobile number.","write_action":false,"price_micros":0,"input_schema":null},{"name":"normalize_mobile","description":"Validate and normalize an Iranian mobile number to 09xxxxxxxxx.","write_action":false,"price_micros":0,"input_schema":null},{"name":"normalize_persian_text","description":"Normalize Arabic letter variants to Persian, clean spacing, and convert digits to Persian.","write_action":false,"price_micros":0,"input_schema":null},{"name":"number_to_persian_words","description":"Write a non-negative integer in Persian words, e.g. for invoices.","write_action":true,"price_micros":0,"input_schema":null},{"name":"parse_grouped_number","description":"Strip separators and Persian/Arabic digits to a clean number, e.g. '۲۰۰٬۰۰۰' -> '200000'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_iran_address","description":"Heuristically extract province, city (province capitals only), valid postal code, and plaque/unit/floor numbers from a Persian address string.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_jalali_date","description":"Parse text like '1403/05/09', '۱۴۰۳-۵-۹' or '9 مرداد 1403' into a Jalali date.","write_action":false,"price_micros":0,"input_schema":null},{"name":"persian_font_preset","description":"CSS for Persian fonts (vazirmatn, shabnam, sahel, iransans): import link, font stack with fallbacks, RTL base styles. IRANSans is commercial so no CDN is given.","write_action":false,"price_micros":0,"input_schema":null},{"name":"persian_fuzzy_search","description":"Fuzzy-match a query against candidate strings, treating Arabic/Persian letter variants (ي/ی, ك/ک, آ/ا), diacritics, ZWNJ and digit styles as equal. Returns ranked matches with scores.","write_action":false,"price_micros":0,"input_schema":null},{"name":"persian_lorem_ipsum","description":"Deterministic Persian placeholder text (seeded, original word list; not real prose) for mockups.","write_action":false,"price_micros":0,"input_schema":null},{"name":"persian_ordinal","description":"Persian ordinal words: 3 -> سوم, 21 -> بیست و یکم, 30 -> سی‌ام. 1 gives اول (set firstAsYekom for یکم).","write_action":false,"price_micros":0,"input_schema":null},{"name":"persian_relative_time","description":"Persian relative time like '۳ روز پیش' or '۲ ساعت دیگر'. Pass an ISO timestamp; 'now' defaults to the current time. Months = 30 days, years = 365 days.","write_action":false,"price_micros":0,"input_schema":null},{"name":"persian_sort","description":"Sort strings in Persian alphabetical order (ا ب پ ت ... ی). Digits first (numeric), then Persian, then Latin. Ignores ZWNJ and Arabic/Persian letter variants.","write_action":false,"price_micros":0,"input_schema":null},{"name":"persian_text_stats","description":"Character, letter, digit, ZWNJ, word, sentence and paragraph counts for Persian/mixed text, plus reading time. wordsPerMinute is an adjustable assumption (default 180).","write_action":false,"price_micros":0,"input_schema":null},{"name":"persian_words_to_number","description":"Convert Persian number words to a number, e.g. 'دویست و پنجاه هزار' -> 250000.","write_action":false,"price_micros":0,"input_schema":null},{"name":"price_input_snippet","description":"Ready-to-use RTL-friendly price input code: digit grouping while typing with caret preserved, live Persian words (aria-live), raw value submission. variant 'core' returns the shared helpers.","write_action":false,"price_micros":0,"input_schema":null},{"name":"price_to_persian_words","description":"Amount in Persian words with unit, e.g. 200000 toman -> 'دویست هزار تومان'. Toman may have one decimal digit (tenths = rials).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rtl_audit_css","description":"Scan CSS/HTML/JSX/Tailwind text for LTR-only patterns (margin-left, ml-4, text-align:left, float:left, left/right, forced ltr, directional icons...) and suggest logical replacements.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rtl_convert_css","description":"Convert physical CSS (and React style objects) to logical properties.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rtl_convert_tailwind","description":"Convert Tailwind physical utilities to logical ones (ml-4 -> ms-4, pr-2 -> pe-2, text-left -> text-start).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rtl_guidelines","description":"Full RTL frontend guidelines for Persian/Arabic UIs (also available as prompt and resource 'rtl-frontend-guidelines').","write_action":false,"price_micros":0,"input_schema":null},{"name":"rtl_starter_snippet","description":"Minimal RTL-ready setup for html, css, tailwind, nextjs, react or vue.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sanitize_persian_text","description":"Fix ZWNJ (half-space) for می/نمی and plural suffixes, Persian punctuation and spacing, Arabic letter variants.","write_action":false,"price_micros":0,"input_schema":null},{"name":"slugify_persian","description":"Create a URL slug from Persian/Latin text.","write_action":true,"price_micros":0,"input_schema":null},{"name":"to_persian_digits","description":"Convert any digits in a string to Persian digits.","write_action":false,"price_micros":0,"input_schema":null},{"name":"truncate_persian_text","description":"Truncate text to maxLength (ellipsis included) without breaking words, ZWNJ-joined words, surrogate pairs or diacritics. mode 'word' (default) or 'char'.","write_action":true,"price_micros":0,"input_schema":null},{"name":"validate_card_number","description":"Validate a 16-digit Iranian bank card number (Luhn).","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_jalali_date","description":"Form validation for a Jalali date with readable reasons: month/day ranges (leap-aware), min, max and notFuture checks. Never throws.","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_legal_national_id","description":"Validate an 11-digit Iranian legal-entity national ID (شناسه ملی شخص حقوقی / company ID) with its checksum.","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_national_id","description":"Validate an Iranian national ID (code melli) using its checksum.","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_postal_code","description":"Validate an Iranian 10-digit postal code.","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_sheba","description":"Validate an Iranian Sheba (IBAN) number.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-28T05:56:15.390Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-28T05:56:15.288Z","components":{"code":{"score":25,"max":25,"notes":["58 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 10 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"parsi-mcp","version":"0.3.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-10-17T13:25:58.163Z","repositoryUrl":"git+https://github.com/amirjld/parsi-mcp.git","weeklyDownloads":41}],"repo":{"found":true,"owner":"amirjld","repo":"parsi-mcp","archived":false,"pushedAt":"2026-10-18T13:19:28Z","stars":5,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/149194772?v=4","ownerCreatedAt":"2023-10-27T17:35:50Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/149194772?v=4&s=128","source":"github"},"presence":{"stars":5,"forks":0,"downloadsWeek":41,"license":"MIT","lastPushAt":"2026-10-18T13:19:28.000Z","score":31}}}},"grade_history":[],"reviews":[]}