Irfan Aslam Tools
78 free tools: Saudi salary, GOSI, VAT, Nitaqat, traffic fines, HSE, developer and SEO checks.
Should I use this
Quality & Safety
Findings (98)
- HIGH
- MEDIUMin saudi_end_of_service
- MEDIUMin saudi_final_settlement
- MEDIUMin saudi_gosi_contribution
- MEDIUMin saudi_net_salary
- MEDIUMin saudi_overtime_pay
- MEDIUMin saudi_leave
- MEDIUMin saudi_vat
- MEDIUMin zakat
- MEDIUMin hijri_gregorian_convert
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"tools": {
"url": "https://irfanaslam.io/mcp"
}
}
}Remote endpoints
https://irfanaslam.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (78)
🟢saudi_end_of_service(monthly_wage, start_date, end_date, reason)
Calculate the end-of-service award (gratuity / مكافأة نهاية الخدمة) under Saudi Labor Law Articles 84 and 85, including the reduction on resignation. Web version: https://irfanaslam.io/tools/saudi-end-of-service-calculator
Input Schema
{
"type": "object",
"properties": {
"monthly_wage": {
"type": "number",
"minimum": 0,
"description": "Last monthly wage in SAR as the contract defines it (usually basic plus fixed allowances)."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First day of service (YYYY-MM-DD)"
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last working day, default today (YYYY-MM-DD)"
},
"reason": {
"type": "string",
"enum": [
"termination",
"resignation"
],
"description": "termination = contract ended or employer terminated; resignation = employee resigned. Default termination."
}
},
"required": [
"monthly_wage",
"start_date"
]
}🟢saudi_final_settlement(monthly_wage, start_date, end_date, reason, unused_leave_days, ...)
Estimate a full final settlement (المخالصة النهائية) in Saudi Arabia: end-of-service award plus unused leave, unpaid salary days and notice pay, less deductions. Web version: https://irfanaslam.io/tools/saudi-final-settlement-calculator
Input Schema
{
"type": "object",
"properties": {
"monthly_wage": {
"type": "number",
"minimum": 0,
"description": "Last monthly wage in SAR including fixed allowances."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First day of service (YYYY-MM-DD)"
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last working day, default today (YYYY-MM-DD)"
},
"reason": {
"type": "string",
"enum": [
"termination",
"resignation"
]
},
"unused_leave_days": {
"type": "number",
"minimum": 0,
"description": "Unused annual leave days."
},
"unpaid_salary_days": {
"type": "number",
"minimum": 0,
"description": "Days worked but not yet paid."
},
"notice_days_owed": {
"type": "number",
"minimum": 0,
"description": "Notice days paid instead of worked."
},
"other_dues_sar": {
"type": "number",
"minimum": 0,
"description": "Other amounts owed (SAR)."
},
"deductions_sar": {
"type": "number",
"minimum": 0,
"description": "Loans, advances or other deductions (SAR)."
}
},
"required": [
"monthly_wage",
"start_date"
]
}🟢saudi_gosi_contribution(basic_salary, housing_allowance, housing_in_kind, nationality, first_registered, ...)
Calculate monthly GOSI (social insurance, التأمينات الاجتماعية) contributions for employee and employer in Saudi Arabia, including the new-law annuity rates for people first registered from 3 July 2024. Web version: https://irfanaslam.io/tools/saudi-gosi-calculator
Input Schema
{
"type": "object",
"properties": {
"basic_salary": {
"type": "number",
"minimum": 0,
"description": "Basic monthly salary in SAR."
},
"housing_allowance": {
"type": "number",
"minimum": 0,
"description": "Monthly housing allowance in SAR (default 0)."
},
"housing_in_kind": {
"type": "boolean",
"description": "True if the employer provides housing instead of an allowance (counts as 2 months' basic a year)."
},
"nationality": {
"type": "string",
"enum": [
"saudi",
"non_saudi"
],
"description": "Default saudi."
},
"first_registered": {
"type": "string",
"enum": [
"before_2024_07_03",
"on_or_after_2024_07_03"
],
"description": "When the employee was first registered with GOSI. Default before_2024_07_03."
},
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "Contribution month YYYY-MM, default this month (new-law rates rise each July)."
}
},
"required": [
"basic_salary"
]
}🟢saudi_net_salary(basic_salary, housing_allowance, housing_in_kind, nationality, first_registered, ...)
Work out net (take-home) salary in Saudi Arabia after GOSI, plus the total monthly and yearly cost to the employer (including the expat levy for non-Saudis). Web version: https://irfanaslam.io/tools/saudi-salary-calculator
Input Schema
{
"type": "object",
"properties": {
"basic_salary": {
"type": "number",
"minimum": 0,
"description": "Basic monthly salary in SAR."
},
"housing_allowance": {
"type": "number",
"minimum": 0,
"description": "Monthly housing allowance in SAR (default 0)."
},
"housing_in_kind": {
"type": "boolean",
"description": "True if the employer provides housing instead of an allowance (counts as 2 months' basic a year)."
},
"nationality": {
"type": "string",
"enum": [
"saudi",
"non_saudi"
],
"description": "Default saudi."
},
"first_registered": {
"type": "string",
"enum": [
"before_2024_07_03",
"on_or_after_2024_07_03"
],
"description": "When the employee was first registered with GOSI. Default before_2024_07_03."
},
"transport_allowance": {
"type": "number",
"minimum": 0,
"description": "Monthly transport allowance (SAR)."
},
"other_allowances": {
"type": "number",
"minimum": 0,
"description": "Other monthly allowances (SAR)."
},
"other_deductions": {
"type": "number",
"minimum": 0,
"description": "Other monthly deductions such as absence or loan (SAR)."
},
"employer_medical_insurance": {
"type": "number",
"minimum": 0,
"description": "Employer medical insurance per month (SAR)."
}
},
"required": [
"basic_salary"
]
}🟢saudi_overtime_pay(basic_salary, total_monthly_wage, overtime_hours, monthly_hours)
Calculate overtime pay under Saudi Labor Law Article 107: normal hourly wage plus 50% of the basic hourly wage for each overtime hour. Web version: https://irfanaslam.io/tools/saudi-overtime-calculator
Input Schema
{
"type": "object",
"properties": {
"basic_salary": {
"type": "number",
"minimum": 0,
"description": "Basic monthly salary (SAR)."
},
"total_monthly_wage": {
"type": "number",
"minimum": 0,
"description": "Total monthly wage including fixed allowances (SAR); default basic."
},
"overtime_hours": {
"type": "number",
"minimum": 0,
"description": "Overtime hours."
},
"monthly_hours": {
"type": "number",
"minimum": 1,
"description": "Normal working hours a month, default 240 (8 h x 30 days); about 180 in Ramadan."
}
},
"required": [
"basic_salary",
"overtime_hours"
]
}🟢saudi_leave(kind, start_date, as_of_date, days_taken, monthly_wage, ...)
Saudi Labor Law leave: annual leave balance (Article 109), sick leave pay (Article 117) or maternity leave dates (Article 151 as amended February 2025). Web version: https://irfanaslam.io/tools/saudi-leave-calculator
Input Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"annual",
"sick",
"maternity"
]
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "annual: start date with this employer (YYYY-MM-DD)"
},
"as_of_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "annual: calculate up to, default today (YYYY-MM-DD)"
},
"days_taken": {
"type": "number",
"minimum": 0,
"description": "annual: leave days already taken over the whole service"
},
"monthly_wage": {
"type": "number",
"minimum": 0,
"description": "annual or sick: monthly wage in SAR"
},
"sick_days": {
"type": "number",
"minimum": 0,
"description": "sick: sick leave days in the past 12 months including this one"
},
"due_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "maternity: expected due date (YYYY-MM-DD)"
},
"weeks_before_due": {
"type": "integer",
"minimum": 0,
"maximum": 4,
"description": "maternity: weeks of leave before the due date (0-4)"
}
},
"required": [
"kind"
]
}🟢saudi_vat(amount, mode)
Add 15% Saudi VAT to a net price or extract VAT from a VAT-inclusive price (ضريبة القيمة المضافة). Web version: https://irfanaslam.io/tools/saudi-vat-calculator
Input Schema
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"description": "Amount in SAR."
},
"mode": {
"type": "string",
"enum": [
"add",
"remove"
],
"description": "add = amount is net; remove = amount already includes VAT. Default add."
}
},
"required": [
"amount"
]
}🟢zakat(cash, gold_and_investments, receivables, debts_due, business, ...)
Calculate zakat (الزكاة) on personal savings or a trading business at 2.5%, with the nisab worked out from the live gold price (85 g) unless a gold price is given. Web version: https://irfanaslam.io/tools/zakat-calculator
Input Schema
{
"type": "object",
"properties": {
"cash": {
"type": "number",
"minimum": 0,
"description": "Cash and bank balances (SAR)."
},
"gold_and_investments": {
"type": "number",
"minimum": 0,
"description": "Value of gold, silver and investments held for a year (SAR)."
},
"receivables": {
"type": "number",
"minimum": 0,
"description": "Money owed to you that you expect to collect (SAR)."
},
"debts_due": {
"type": "number",
"minimum": 0,
"description": "Debts due within the year (SAR)."
},
"business": {
"type": "boolean",
"description": "True for a trading business or shop."
},
"goods_for_sale": {
"type": "number",
"minimum": 0,
"description": "business: goods for sale at today's market value (SAR)."
},
"gregorian_year": {
"type": "boolean",
"description": "business: financial year is Gregorian (rate scaled by 365/354)."
},
"gold_price_per_gram_sar": {
"type": "number",
"minimum": 0,
"description": "Optional 24K gold price per gram in SAR; fetched live if omitted."
}
}
}🟢hijri_gregorian_convert(gregorian_date, hijri_year, hijri_month, hijri_day)
Convert between Gregorian and Hijri dates using Saudi Arabia's official Umm al-Qura calendar (التاريخ الهجري). Web version: https://irfanaslam.io/tools/hijri-gregorian-converter
Input Schema
{
"type": "object",
"properties": {
"gregorian_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Gregorian date to convert to Hijri (YYYY-MM-DD)"
},
"hijri_year": {
"type": "integer",
"minimum": 1300,
"maximum": 1600
},
"hijri_month": {
"type": "integer",
"minimum": 1,
"maximum": 12
},
"hijri_day": {
"type": "integer",
"minimum": 1,
"maximum": 30
}
},
"description": "Give gregorian_date, or hijri_year + hijri_month + hijri_day."
}🟢saudi_prayer_times(city, latitude, longitude, utc_offset_hours, date)
Prayer times (مواقيت الصلاة) for a Saudi city or any coordinates using the Umm al-Qura method (Fajr 18.5 degrees, Isha 90 minutes after Maghrib, 120 in Ramadan). Web version: https://irfanaslam.io/tools/saudi-prayer-times
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"enum": [
"riyadh",
"jeddah",
"makkah",
"madinah",
"dammam",
"khobar",
"taif",
"tabuk",
"abha",
"buraidah",
"hail",
"jazan"
],
"description": "Saudi city. Or give latitude and longitude instead."
},
"latitude": {
"type": "number",
"minimum": -65,
"maximum": 65
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"utc_offset_hours": {
"type": "number",
"minimum": -12,
"maximum": 14,
"description": "Time zone offset for the coordinates, default 3 (Saudi Arabia)."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date, default today (YYYY-MM-DD)"
}
}
}🟢gold_silver_prices_sar
Live gold price in Saudi riyals per gram for 24K, 22K, 21K and 18K, per ounce and per tola, plus silver per gram (سعر الذهب اليوم في السعودية). Web version: https://irfanaslam.io/tools/gold-price-saudi-arabia
Input Schema
{
"type": "object",
"properties": {}
}🟢sar_exchange_rates(amount, from, to)
Convert Saudi riyals to or from other currencies (USD, EUR, GBP, AED, KWD, QAR, BHD, OMR, JOD, EGP, INR, PKR, BDT, PHP, IDR, LKR, NPR, CNY, JPY, TRY, CAD, AUD, CHF, MYR) with today's mid-market rate. Web version: https://irfanaslam.io/tools/sar-exchange-rates
Input Schema
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"description": "Amount to convert, default 1."
},
"from": {
"type": "string",
"description": "Currency code, default SAR."
},
"to": {
"type": "array",
"items": {
"type": "string"
},
"description": "Currency codes to convert into, default a common list."
}
}
}🟢saudi_fuel_prices(litres)
Current Aramco retail fuel prices in Saudi Arabia (petrol 91, petrol 95 and diesel, SAR per litre), optionally with a trip or fill-up cost. Web version: https://irfanaslam.io/tools/saudi-fuel-prices
Input Schema
{
"type": "object",
"properties": {
"litres": {
"type": "number",
"minimum": 0,
"description": "Optional litres to price."
}
}
}🟢dns_lookup(domain, type)
Look up DNS records (A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, SRV) for a domain through Cloudflare DNS over HTTPS. Web version: https://irfanaslam.io/tools/dns-lookup
Input Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain name, for example example.com (no https:// or path)."
},
"type": {
"type": "string",
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"TXT",
"NS",
"SOA",
"CAA",
"SRV"
],
"description": "Record type, default A."
}
},
"required": [
"domain"
]
}🟢email_security_check(domain, dkim_selector)
Check a domain's email authentication: MX, SPF, DMARC policy and DKIM keys on common selectors, with plain-English fixes for anything missing. Web version: https://irfanaslam.io/tools/dmarc-checker
Input Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain name, for example example.com (no https:// or path)."
},
"dkim_selector": {
"type": "string",
"description": "Optional DKIM selector to check in addition to common ones."
}
},
"required": [
"domain"
]
}🟢ssl_certificate_check(domain)
Find when a domain's SSL/TLS certificate expires and who issued it, from public Certificate Transparency logs. Web version: https://irfanaslam.io/tools/ssl-checker
Input Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain name, for example example.com (no https:// or path)."
}
},
"required": [
"domain"
]
}🟢website_health_check(domain)
Run a website health check on a domain: HTTPS and redirects, SSL expiry, HSTS and security headers (CSP, X-Frame-Options and more), email security, DNSSEC, CAA, IPv6, domain expiry and basic SEO, with a score and fixes. Web version: https://irfanaslam.io/tools/website-health-check
Input Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain name, for example example.com (no https:// or path)."
}
},
"required": [
"domain"
]
}🟢saudi_electricity_bill(kwh, sector, breaker, fixed_fee_sar, days)
Estimate a Saudi Electricity (SEC) bill with the tariff from 1 January 2027: slab rates per kWh, the monthly fixed fee by breaker size and 15% VAT, with the old 2026 cost for comparison. Web version: https://irfanaslam.io/tools/saudi-electricity-bill-calculator
Input Schema
{
"type": "object",
"properties": {
"kwh": {
"type": "number",
"description": "Consumption in kWh for the billing period.",
"minimum": 0
},
"sector": {
"type": "string",
"enum": [
"residential",
"commercial",
"agricultural",
"charity",
"industrial",
"government"
],
"description": "Default residential."
},
"breaker": {
"type": "string",
"enum": [
"20_to_99a",
"100_to_199a",
"200_to_299a",
"300_to_399a",
"400a",
"above_400a"
],
"description": "Residential breaker size, default 20_to_99a (most homes)."
},
"fixed_fee_sar": {
"type": "number",
"description": "Non-residential: the monthly fixed fee on the bill (SAR)."
},
"days": {
"type": "integer",
"description": "Days in the billing period, default 30.",
"minimum": 1,
"maximum": 62
}
},
"required": [
"kwh"
]
}🟢saudi_water_bill(cubic_metres, meter, sewer_connected, extra_homes)
Estimate a National Water Company (NWC) residential bill with the tariff from 1 January 2027: tiered water rates, wastewater at half the water rate, fixed fees by meter size and 15% VAT. Web version: https://irfanaslam.io/tools/saudi-water-bill-calculator
Input Schema
{
"type": "object",
"properties": {
"cubic_metres": {
"type": "number",
"description": "Water used in m3 for the month.",
"minimum": 0
},
"meter": {
"type": "string",
"enum": [
"up_to_20mm",
"21_to_40mm",
"41_to_65mm"
],
"description": "Default up_to_20mm (most homes)."
},
"sewer_connected": {
"type": "boolean",
"description": "Connected to the public sewer (wastewater billed). Default true."
},
"extra_homes": {
"type": "integer",
"description": "Extra homes on the same meter, default 0.",
"minimum": 0,
"maximum": 50
}
},
"required": [
"cubic_metres"
]
}🟢iqama_dependent_fees(dependents, months, include_own_iqama, exit_reentry_trips, trip_months, ...)
Budget the yearly cost of living in Saudi Arabia with family: dependent levy (SAR 400 per person a month), exit re-entry visas and, optionally, your own Iqama and work permit. Web version: https://irfanaslam.io/tools/iqama-dependent-fee-calculator
Input Schema
{
"type": "object",
"properties": {
"dependents": {
"type": "integer",
"description": "Number of dependents.",
"minimum": 0,
"maximum": 30
},
"months": {
"type": "integer",
"description": "Months to budget for, default 12.",
"minimum": 1,
"maximum": 24
},
"include_own_iqama": {
"type": "boolean",
"description": "Include your own Iqama (SAR 650 a year) and work-permit levy (SAR 800 a month); normally the employer pays these."
},
"exit_reentry_trips": {
"type": "integer",
"description": "Single exit re-entry visas in the period.",
"minimum": 0,
"maximum": 50
},
"trip_months": {
"type": "integer",
"description": "Months per visa, default 2.",
"minimum": 1,
"maximum": 12
},
"travellers_per_trip": {
"type": "integer",
"description": "People on each visa, default 1.",
"minimum": 1,
"maximum": 30
},
"dependent_levy_sar": {
"type": "number",
"description": "Override: levy per dependent a month."
},
"iqama_renewal_sar": {
"type": "number",
"description": "Override: Iqama renewal a year."
},
"worker_levy_sar": {
"type": "number",
"description": "Override: expat worker levy a month."
}
},
"required": [
"dependents"
]
}🟢exit_reentry_visa(type, months, departure_date, iqama_expiry, planned_return, ...)
Work out a Saudi exit re-entry visa fee (single or multiple), the return-by date and warnings if the visa runs past the Iqama expiry or the planned return. Web version: https://irfanaslam.io/tools/exit-reentry-visa-calculator
Input Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"single",
"multiple"
],
"description": "Default single."
},
"months": {
"type": "integer",
"description": "Visa length in months.",
"minimum": 1,
"maximum": 24
},
"departure_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Departure date (YYYY-MM-DD)"
},
"iqama_expiry": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Iqama expiry (optional) (YYYY-MM-DD)"
},
"planned_return": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Planned return (optional) (YYYY-MM-DD)"
},
"people": {
"type": "integer",
"description": "People on the visa, default 1.",
"minimum": 1,
"maximum": 30
}
},
"required": [
"months",
"departure_date"
]
}🟢saudi_probation_notice(kind, start_date, probation_days, sick_days, who_ends, ...)
Saudi Labor Law dates (as amended February 2025): when probation ends (Eid days and sick leave not counted), the last day of a notice period, or when a fixed-term contract ends. Web version: https://irfanaslam.io/tools/saudi-probation-notice-calculator
Input Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"probation",
"notice",
"contract"
],
"description": "What to work out."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "probation: first working day; notice: date notice is given; contract: contract start (YYYY-MM-DD)"
},
"probation_days": {
"type": "integer",
"description": "probation: length in the contract, max 180, default 90.",
"minimum": 1,
"maximum": 180
},
"sick_days": {
"type": "integer",
"description": "probation: sick days during probation.",
"minimum": 0,
"maximum": 180
},
"who_ends": {
"type": "string",
"enum": [
"employee",
"employer"
],
"description": "notice: employee resigns (30 days) or employer terminates (60 days)."
},
"contract_years": {
"type": "number",
"description": "contract: length in years."
}
},
"required": [
"kind",
"start_date"
]
}🟢working_days(start_date, end_date, add_working_days, weekend, saudi_holidays)
Count working days between two dates, or find the date N working days after a start date, skipping weekends and Saudi public holidays (Founding Day, National Day, Eid al-Fitr, Eid al-Adha). Web version: https://irfanaslam.io/tools/working-days-calculator
Input Schema
{
"type": "object",
"properties": {
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date (YYYY-MM-DD)"
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date (or give add_working_days) (YYYY-MM-DD)"
},
"add_working_days": {
"type": "integer",
"description": "Working days to add to the start date.",
"minimum": 1,
"maximum": 2000
},
"weekend": {
"type": "string",
"enum": [
"fri_sat",
"sat_sun",
"fri"
],
"description": "Default fri_sat."
},
"saudi_holidays": {
"type": "boolean",
"description": "Skip Saudi private-sector public holidays, default true."
}
},
"required": [
"start_date"
]
}🟢saudi_iban_validate(iban)
Check a Saudi IBAN (SA + 22 digits) with the mod-97 check digits and identify the bank from its code. Web version: https://irfanaslam.io/tools/saudi-iban-validator
Input Schema
{
"type": "object",
"properties": {
"iban": {
"type": "string",
"description": "IBAN, spaces allowed, e.g. SA03 8000 0000 6080 1016 7519"
}
},
"required": [
"iban"
]
}🟢zatca_qr_code(mode, seller_name, vat_number, timestamp, invoice_total, ...)
Create the Base64 TLV text for a ZATCA Phase 1 simplified e-invoice QR code (seller, VAT number, timestamp, total, VAT), or decode the text read from any ZATCA invoice QR. Web version: https://irfanaslam.io/tools/zatca-qr-code
Input Schema
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"create",
"decode"
],
"description": "Default create."
},
"seller_name": {
"type": "string",
"description": "create: seller name"
},
"vat_number": {
"type": "string",
"description": "create: 15-digit VAT number starting and ending with 3"
},
"timestamp": {
"type": "string",
"description": "create: ISO date-time, default now"
},
"invoice_total": {
"type": "number",
"description": "create: total including VAT (SAR)"
},
"vat_total": {
"type": "number",
"description": "create: VAT amount (SAR); default 15/115 of the total"
},
"base64": {
"type": "string",
"description": "decode: the Base64 text from the QR code"
}
}
}🟢fuel_trip_cost(distance_km, round_trip, consumption, unit, fuel, ...)
Fuel cost of a car trip in Saudi Arabia from distance and consumption, at Aramco prices (91, 95, diesel) or your own price, split between passengers. Web version: https://irfanaslam.io/tools/fuel-cost-calculator
Input Schema
{
"type": "object",
"properties": {
"distance_km": {
"type": "number",
"description": "One-way distance in km."
},
"round_trip": {
"type": "boolean",
"description": "Double the distance, default false."
},
"consumption": {
"type": "number",
"description": "Fuel use in the unit below."
},
"unit": {
"type": "string",
"enum": [
"l_per_100km",
"km_per_litre",
"mpg_us"
],
"description": "Default km_per_litre."
},
"fuel": {
"type": "string",
"enum": [
"gasoline_91",
"gasoline_95",
"diesel"
],
"description": "Default gasoline_91."
},
"price_per_litre_sar": {
"type": "number",
"description": "Optional own price per litre."
},
"passengers": {
"type": "integer",
"description": "Split between, default 1.",
"minimum": 1,
"maximum": 60
}
},
"required": [
"distance_km",
"consumption"
]
}🟢appliance_energy_cost(appliances, days, price_per_kwh)
Monthly kWh and cost of appliances (AC, fridge, heater...) from watts, hours a day and quantity, at the Saudi residential tariff (21/33 halalas + VAT) or your own rate. Web version: https://irfanaslam.io/tools/appliance-energy-calculator
Input Schema
{
"type": "object",
"properties": {
"appliances": {
"type": "array",
"maxItems": 30,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Appliance name"
},
"watts": {
"type": "number",
"description": "Power in watts",
"minimum": 1
},
"hours_per_day": {
"type": "number",
"description": "Hours on per day",
"minimum": 0,
"maximum": 24
},
"quantity": {
"type": "integer",
"description": "How many, default 1",
"minimum": 1
}
},
"required": [
"watts",
"hours_per_day"
]
},
"description": "Typical watts: split AC 1.5 ton 1800, 2 ton 2400, window AC 2200, fridge 150, water heater 2000."
},
"days": {
"type": "integer",
"description": "Days, default 30.",
"minimum": 1,
"maximum": 31
},
"price_per_kwh": {
"type": "number",
"description": "Optional own price per kWh (no VAT added)."
}
},
"required": [
"appliances"
]
}🟢ramadan_imsakiya(city)
Ramadan timetable (imsakiya) for a Saudi city: imsak, fajr, maghrib (iftar) and isha for every day of the current or next Ramadan by the Umm al-Qura calendar. Web version: https://irfanaslam.io/tools/ramadan-imsakiya
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"enum": [
"riyadh",
"jeddah",
"makkah",
"madinah",
"dammam",
"khobar",
"taif",
"tabuk",
"abha",
"buraidah",
"hail",
"jazan"
],
"description": "Default riyadh."
}
}
}🟢amount_to_words(amount, currency)
Write an amount in words in Arabic (تفقيط) and English, as on Saudi cheques and invoices (فقط ... لا غير / ... only). Currencies: SAR, AED, USD, KWD, EGP, PKR, INR. Web version: https://irfanaslam.io/tools/amount-to-words
Input Schema
{
"type": "object",
"properties": {
"amount": {
"type": "string",
"description": "Amount in digits, e.g. 1235.50 (up to 999,999,999,999)"
},
"currency": {
"type": "string",
"enum": [
"SAR",
"AED",
"USD",
"KWD",
"EGP",
"PKR",
"INR"
],
"description": "Default SAR."
}
},
"required": [
"amount"
]
}🟢loan_calculator(amount, annual_rate_percent, years, rate_type, fees, ...)
Monthly instalment, total profit and the real APR of a loan or Islamic personal finance, for a flat rate (common in Saudi banks) or a reducing-balance rate, with the SAMA one-third salary check. Web version: https://irfanaslam.io/tools/loan-calculator
Input Schema
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"description": "Loan amount."
},
"annual_rate_percent": {
"type": "number",
"description": "Annual rate in %."
},
"years": {
"type": "number",
"description": "Term in years."
},
"rate_type": {
"type": "string",
"enum": [
"flat",
"reducing"
],
"description": "Default flat."
},
"fees": {
"type": "number",
"description": "Upfront admin fees (for APR)."
},
"monthly_salary": {
"type": "number",
"description": "Optional salary for the 33.33% deduction check."
}
},
"required": [
"amount",
"annual_rate_percent",
"years"
]
}🟢hourly_to_salary(amount, per, hours_per_week, days_per_week, unpaid_weeks)
Convert pay between hourly, daily, weekly, monthly and yearly. Defaults to the Saudi 48-hour, 6-day week. Web version: https://irfanaslam.io/tools/hourly-to-salary-calculator
Input Schema
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"description": "Pay amount."
},
"per": {
"type": "string",
"enum": [
"hour",
"day",
"week",
"month",
"year"
],
"description": "What the amount is per."
},
"hours_per_week": {
"type": "number",
"description": "Default 48 (Saudi Arabia); 40 elsewhere."
},
"days_per_week": {
"type": "number",
"description": "Default 6."
},
"unpaid_weeks": {
"type": "number",
"description": "Unpaid weeks a year, default 0."
}
},
"required": [
"amount",
"per"
]
}🟢experience_calculator(jobs)
Total work experience in years, months and days from job date ranges, merging overlapping periods. Web version: https://irfanaslam.io/tools/experience-calculator
Input Schema
{
"type": "object",
"properties": {
"jobs": {
"type": "array",
"maxItems": 30,
"items": {
"type": "object",
"properties": {
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start (YYYY-MM-DD)"
},
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End, default today (YYYY-MM-DD)"
}
},
"required": [
"start"
]
}
}
},
"required": [
"jobs"
]
}🟢age_calculator(birth_date, on_date)
Exact age in years, months and days from a date of birth, total days, next birthday, and the Hijri birth date. Web version: https://irfanaslam.io/tools/age-calculator
Input Schema
{
"type": "object",
"properties": {
"birth_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date of birth (YYYY-MM-DD)"
},
"on_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Age on this date, default today (YYYY-MM-DD)"
}
},
"required": [
"birth_date"
]
}🟢percentage_calculator(mode, x, y)
Percentage maths: X% of Y, X is what % of Y, percentage change from X to Y, and add or subtract a percentage (discounts, raises). Web version: https://irfanaslam.io/tools/percentage-calculator
Input Schema
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"percent_of",
"what_percent",
"change",
"add_percent",
"subtract_percent"
],
"description": "percent_of: x% of y; what_percent: x is what % of y; change: from x to y; add_percent/subtract_percent: y plus/minus x%."
},
"x": {
"type": "number",
"description": "First number"
},
"y": {
"type": "number",
"description": "Second number"
}
},
"required": [
"mode",
"x",
"y"
]
}🟢gpa_calculator(scale, courses, previous_gpa, previous_hours, target_gpa, ...)
Term and cumulative GPA on the Saudi 5-point or 4-point scale or the US 4.0 scale, with the rating and the GPA needed next term to reach a target. Web version: https://irfanaslam.io/tools/gpa-calculator
Input Schema
{
"type": "object",
"properties": {
"scale": {
"type": "string",
"enum": [
"saudi_5",
"saudi_4",
"us_4"
],
"description": "Default saudi_5."
},
"courses": {
"type": "array",
"maxItems": 40,
"items": {
"type": "object",
"properties": {
"grade": {
"type": "string",
"description": "Letter grade, e.g. A+, B, C+"
},
"credit_hours": {
"type": "number",
"description": "Credit hours"
}
},
"required": [
"grade",
"credit_hours"
]
}
},
"previous_gpa": {
"type": "number",
"description": "Optional cumulative GPA so far."
},
"previous_hours": {
"type": "number",
"description": "Credit hours behind previous_gpa."
},
"target_gpa": {
"type": "number",
"description": "Optional target cumulative GPA."
},
"next_term_hours": {
"type": "number",
"description": "Hours next term for the target."
}
},
"required": [
"courses"
]
}🟢oil_prices
Latest Brent and WTI crude oil futures prices in US dollars and Saudi riyals per barrel. Web version: https://irfanaslam.io/tools/oil-prices
Input Schema
{
"type": "object",
"properties": {}
}🟢crypto_prices_sar
Live prices of the top cryptocurrencies (Bitcoin, Ethereum, Tether, BNB, Solana, XRP and more) in Saudi riyals and US dollars with 24-hour change. Web version: https://irfanaslam.io/tools/crypto-prices-sar
Input Schema
{
"type": "object",
"properties": {}
}🟢incident_rates(hours_worked, workers, recordable_cases, lost_time_injuries, days_lost, ...)
Calculate TRIR, LTIFR, LTIR, severity rate and fatal accident rate from hours worked and injuries (OSHA 200,000-hour and IOGP 1,000,000-hour bases). Web version: https://irfanaslam.io/tools/incident-rate-calculator
Input Schema
{
"type": "object",
"properties": {
"hours_worked": {
"type": "number",
"description": "Total hours worked (or give workers)."
},
"workers": {
"type": "number",
"description": "Number of full-time workers (x 2000 hours)."
},
"recordable_cases": {
"type": "number",
"description": "Recordable injuries and illnesses."
},
"lost_time_injuries": {
"type": "number",
"description": "Lost-time injuries."
},
"days_lost": {
"type": "number",
"description": "Total days lost."
},
"fatalities": {
"type": "number",
"description": "Fatalities."
}
}
}🟢heat_stress(air_temp_c, humidity_percent, in_direct_sun, wbgt_c, work, ...)
Check heat stress for outdoor work: estimate WBGT from temperature and humidity (or use a measured WBGT), heat index, and the ACGIH work-rest regime for the work intensity and acclimatisation. Web version: https://irfanaslam.io/tools/heat-stress-calculator
Input Schema
{
"type": "object",
"properties": {
"air_temp_c": {
"type": "number",
"description": "Air temperature in C (15-55)."
},
"humidity_percent": {
"type": "number",
"description": "Relative humidity % (5-99)."
},
"in_direct_sun": {
"type": "boolean",
"description": "Outdoors in direct sun (+3 C WBGT). Default true."
},
"wbgt_c": {
"type": "number",
"description": "A measured WBGT in C, instead of temperature and humidity."
},
"work": {
"type": "string",
"enum": [
"light",
"moderate",
"heavy",
"very_heavy"
],
"description": "Work intensity, default moderate."
},
"acclimatised": {
"type": "boolean",
"description": "Workers acclimatised to heat for 1-2 weeks. Default true."
}
}
}🟢risk_matrix(likelihood, severity, residual_likelihood, residual_severity)
Rate a hazard on a 5x5 risk matrix: likelihood x severity gives a score (1-25), a band (low, medium, high, extreme) and the required action, before and after controls. Web version: https://irfanaslam.io/tools/risk-matrix-calculator
Input Schema
{
"type": "object",
"properties": {
"likelihood": {
"type": "integer",
"description": "1 rare, 2 unlikely, 3 possible, 4 likely, 5 almost certain",
"minimum": 1,
"maximum": 5
},
"severity": {
"type": "integer",
"description": "1 insignificant, 2 minor, 3 moderate, 4 major, 5 catastrophic",
"minimum": 1,
"maximum": 5
},
"residual_likelihood": {
"type": "integer",
"description": "After controls (optional)",
"minimum": 1,
"maximum": 5
},
"residual_severity": {
"type": "integer",
"description": "After controls (optional)",
"minimum": 1,
"maximum": 5
}
},
"required": [
"likelihood",
"severity"
]
}🟢noise_exposure(exposures)
Daily noise dose and 8-hour TWA from noise levels (dBA) and durations, under OSHA (90 dBA, 5 dB rule) and NIOSH (85 dBA, 3 dB rule). Web version: https://irfanaslam.io/tools/noise-exposure-calculator
Input Schema
{
"type": "object",
"properties": {
"exposures": {
"type": "array",
"maxItems": 12,
"items": {
"type": "object",
"properties": {
"dba": {
"type": "number",
"description": "Noise level dBA"
},
"hours": {
"type": "number",
"description": "Hours at that level"
}
},
"required": [
"dba",
"hours"
]
}
}
},
"required": [
"exposures"
]
}🟢ladder_angle(height_m, base_m, roof_access)
Ladder safety by the 4:1 rule (about 75.5 degrees): base distance and ladder length for a height, or check the angle from height and base distance. Web version: https://irfanaslam.io/tools/ladder-angle-calculator
Input Schema
{
"type": "object",
"properties": {
"height_m": {
"type": "number",
"description": "Height to the support point (m)."
},
"base_m": {
"type": "number",
"description": "Distance of the foot from the wall (m), to check an angle."
},
"roof_access": {
"type": "boolean",
"description": "Used to step onto a roof or platform (extend 1 m above)."
}
},
"required": [
"height_m"
]
}🟢sling_angle(load_tonnes, legs, angle_degrees, angle_from, wll_per_leg_tonnes)
Rigging: load angle factor and tension per sling leg from the load weight, number of legs and the sling angle, with a WLL check. Web version: https://irfanaslam.io/tools/sling-angle-calculator
Input Schema
{
"type": "object",
"properties": {
"load_tonnes": {
"type": "number",
"description": "Load weight (t)."
},
"legs": {
"type": "integer",
"description": "Number of legs 1-4.",
"minimum": 1,
"maximum": 4
},
"angle_degrees": {
"type": "number",
"description": "Sling angle in degrees."
},
"angle_from": {
"type": "string",
"enum": [
"horizontal",
"vertical"
],
"description": "Is the angle measured from horizontal or vertical? Default horizontal."
},
"wll_per_leg_tonnes": {
"type": "number",
"description": "Optional WLL of each leg (t)."
}
},
"required": [
"load_tonnes",
"legs"
]
}🟢confined_space_gas_test(o2_percent, lel_percent, h2s_ppm, co_ppm, limits)
Check gas detector readings (O2, LEL, H2S, CO) against permit-to-work limits before confined space entry. Web version: https://irfanaslam.io/tools/confined-space-gas-test
Input Schema
{
"type": "object",
"properties": {
"o2_percent": {
"type": "number",
"description": "Oxygen %"
},
"lel_percent": {
"type": "number",
"description": "Flammable gas % LEL"
},
"h2s_ppm": {
"type": "number",
"description": "H2S ppm"
},
"co_ppm": {
"type": "number",
"description": "CO ppm"
},
"limits": {
"type": "object",
"properties": {
"o2_min": {
"type": "number",
"description": "default 19.5"
},
"o2_max": {
"type": "number",
"description": "default 23.5"
},
"lel_max": {
"type": "number",
"description": "default 10"
},
"h2s_max": {
"type": "number",
"description": "default 10"
},
"co_max": {
"type": "number",
"description": "default 25"
}
}
}
},
"required": [
"o2_percent",
"lel_percent",
"h2s_ppm",
"co_ppm"
]
}🟢fire_extinguisher_selector(fire)
Which fire extinguisher to use (and which never to use) for a fire type, with the European/ISO/GCC and US/NFPA fire classes. Web version: https://irfanaslam.io/tools/fire-extinguisher-selector
Input Schema
{
"type": "object",
"properties": {
"fire": {
"type": "string",
"enum": [
"ordinary",
"liquids",
"gases",
"metals",
"electrical",
"cooking"
],
"description": "ordinary solids, flammable liquids, gases, metals, live electrical, or cooking oils."
}
},
"required": [
"fire"
]
}🟢uuid_generate(count, version)
Generate random UUIDs (version 4) or time-ordered UUIDs (version 7). Web version: https://irfanaslam.io/tools/uuid-generator
Input Schema
{
"type": "object",
"properties": {
"count": {
"type": "integer",
"description": "How many, default 1, max 50.",
"minimum": 1,
"maximum": 50
},
"version": {
"type": "string",
"enum": [
"4",
"7"
],
"description": "Default 4."
}
}
}🟢password_generate(length, count, symbols, exclude_ambiguous)
Generate strong random passwords (cryptographically secure) or passphrases, with the estimated entropy. Generated on the server and not stored. Web version: https://irfanaslam.io/tools/password-generator
Input Schema
{
"type": "object",
"properties": {
"length": {
"type": "integer",
"description": "Characters, default 20 (8-128).",
"minimum": 8,
"maximum": 128
},
"count": {
"type": "integer",
"description": "How many, default 1, max 20.",
"minimum": 1,
"maximum": 20
},
"symbols": {
"type": "boolean",
"description": "Include symbols, default true."
},
"exclude_ambiguous": {
"type": "boolean",
"description": "Leave out 0 O o 1 l I, default false."
}
}
}🟢hash_text(text, algorithm)
Hash text with MD5, SHA-1, SHA-256, SHA-384 and SHA-512 (hex and Base64). Web version: https://irfanaslam.io/tools/hash-generator
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Text to hash (UTF-8)."
},
"algorithm": {
"type": "string",
"enum": [
"all",
"MD5",
"SHA-1",
"SHA-256",
"SHA-384",
"SHA-512"
],
"description": "Default all."
}
},
"required": [
"text"
]
}🟢encode_decode(text, format, direction)
Encode or decode text as Base64, Base64URL, URL (percent) encoding, HTML entities or hex. Web version: https://irfanaslam.io/tools/encode-decode
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Input text."
},
"format": {
"type": "string",
"enum": [
"base64",
"base64url",
"url",
"html",
"hex"
],
"description": "Encoding."
},
"direction": {
"type": "string",
"enum": [
"encode",
"decode"
],
"description": "Default encode."
}
},
"required": [
"text",
"format"
]
}🟢jwt_decode(token)
Decode a JSON Web Token's header and payload, show issued/expiry times and whether it has expired. Does not verify the signature. Web version: https://irfanaslam.io/tools/jwt-decoder
Input Schema
{
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "The JWT (header.payload.signature)."
}
},
"required": [
"token"
]
}🟢timestamp_convert(value, timezone)
Convert a Unix timestamp (seconds or milliseconds) to ISO, UTC and Riyadh time, or a date-time to a Unix timestamp. Omit input for the current time. Web version: https://irfanaslam.io/tools/timestamp-converter
Input Schema
{
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Unix seconds, Unix milliseconds, or a date-time such as 2026-11-03T10:00:00Z. Empty for now."
},
"timezone": {
"type": "string",
"description": "IANA time zone for local time, default Asia/Riyadh."
}
}
}🟢json_format_validate(json, style, indent, sort_keys)
Validate JSON and return it pretty-printed or minified, with the error position if it is invalid. Web version: https://irfanaslam.io/tools/json-formatter-validator
Input Schema
{
"type": "object",
"properties": {
"json": {
"type": "string",
"description": "JSON text."
},
"style": {
"type": "string",
"enum": [
"pretty",
"minify"
],
"description": "Default pretty."
},
"indent": {
"type": "integer",
"description": "Spaces for pretty, default 2.",
"minimum": 1,
"maximum": 8
},
"sort_keys": {
"type": "boolean",
"description": "Sort object keys."
}
},
"required": [
"json"
]
}🟢json_csv_convert(input, direction, delimiter)
Convert a JSON array of objects to CSV, or CSV (with a header row) to JSON. Web version: https://irfanaslam.io/tools/json-csv-converter
Input Schema
{
"type": "object",
"properties": {
"input": {
"type": "string",
"description": "JSON array or CSV text."
},
"direction": {
"type": "string",
"enum": [
"json_to_csv",
"csv_to_json"
],
"description": "Conversion."
},
"delimiter": {
"type": "string",
"description": "CSV delimiter, default comma."
}
},
"required": [
"input",
"direction"
]
}🟢regex_test(pattern, flags, text, replacement)
Test a JavaScript regular expression against text: matches with positions and capture groups, and an optional replacement result. Web version: https://irfanaslam.io/tools/regex-tester
Input Schema
{
"type": "object",
"properties": {
"pattern": {
"type": "string",
"description": "Regex pattern without slashes."
},
"flags": {
"type": "string",
"description": "Flags such as gim, default g."
},
"text": {
"type": "string",
"description": "Text to test."
},
"replacement": {
"type": "string",
"description": "Optional replacement string ($1, $<name>)."
}
},
"required": [
"pattern",
"text"
]
}🟢subnet_calculator(cidr)
IPv4 subnet details from CIDR (e.g. 192.168.1.10/24): network, broadcast, netmask, wildcard, first and last host, host count, and whether it is private. Web version: https://irfanaslam.io/tools/subnet-calculator
Input Schema
{
"type": "object",
"properties": {
"cidr": {
"type": "string",
"description": "IPv4 address with prefix, e.g. 10.0.5.20/22, or an address plus netmask like 10.0.5.20 255.255.252.0"
}
},
"required": [
"cidr"
]
}🟢cron_explain(expression, count, timezone)
Check a 5-field cron expression (minute hour day-of-month month day-of-week) and list its next run times in UTC or a chosen time zone. Web version: https://irfanaslam.io/tools/cron-expression-generator
Input Schema
{
"type": "object",
"properties": {
"expression": {
"type": "string",
"description": "Cron expression, e.g. */15 9-17 * * 1-5, or @daily, @hourly, @weekly, @monthly"
},
"count": {
"type": "integer",
"description": "Next runs to list, default 5.",
"minimum": 1,
"maximum": 20
},
"timezone": {
"type": "string",
"description": "IANA time zone, default UTC (cron usually runs in the server's zone)."
}
},
"required": [
"expression"
]
}🟢user_agent_parse(user_agent)
Identify the browser, version, operating system, device type and known bots from a User-Agent string. Web version: https://irfanaslam.io/tools/user-agent-analyzer
Input Schema
{
"type": "object",
"properties": {
"user_agent": {
"type": "string",
"description": "User-Agent header value."
}
},
"required": [
"user_agent"
]
}🟢http_status_code(code)
Explain an HTTP status code (including Cloudflare 52x codes) and what it means for SEO. Web version: https://irfanaslam.io/tools/http-status-codes
Input Schema
{
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Status code, e.g. 301, 404, 503",
"minimum": 100,
"maximum": 599
}
},
"required": [
"code"
]
}🟢mime_type_lookup(query)
Find the MIME (Content-Type) for a file extension, or the extensions for a MIME type. Web version: https://irfanaslam.io/tools/mime-type-reference
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Extension (pdf, .webp) or MIME type (image/png)."
}
},
"required": [
"query"
]
}🟢text_stats(text, top)
Count words, characters, sentences and paragraphs, estimate reading time, and list the top keywords with their density (works for English and Arabic). Web version: https://irfanaslam.io/tools/word-counter
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Text to analyse."
},
"top": {
"type": "integer",
"description": "Top keywords to list, default 10.",
"minimum": 1,
"maximum": 50
}
},
"required": [
"text"
]
}🟢url_slug(text, max_length, keep_arabic)
Turn a title into a clean, lowercase, hyphenated URL slug (accents removed; Arabic kept as is or dropped). Web version: https://irfanaslam.io/tools/url-slug-generator
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Title or phrase."
},
"max_length": {
"type": "integer",
"description": "Max length, default 80.",
"minimum": 10,
"maximum": 200
},
"keep_arabic": {
"type": "boolean",
"description": "Keep Arabic letters, default false."
}
},
"required": [
"text"
]
}🟢dns_propagation(domain, type, expected)
Check whether a DNS change has propagated: asks 10 public resolvers and locations (Google, Cloudflare, Quad9 and country views) for a record and compares the answers. Web version: https://irfanaslam.io/tools/dns-propagation-checker
Input Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain name, for example example.com (no https:// or path)."
},
"type": {
"type": "string",
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"TXT",
"NS",
"CAA"
],
"description": "Default A."
},
"expected": {
"type": "string",
"description": "Optional value you expect, e.g. the new IP."
}
},
"required": [
"domain"
]
}🟢redirect_chain(url)
Follow a URL's redirects hop by hop (up to 10) and show each status code and location, to find chains, loops and 302s that should be 301s. Web version: https://irfanaslam.io/tools/redirect-checker
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "URL to check."
}
},
"required": [
"url"
]
}🟢http_headers_check(url)
Fetch a URL and report its status, response time, all response headers and which security headers (CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy) are missing, with fixes. Web version: https://irfanaslam.io/tools/security-headers-checker
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "URL or domain."
}
},
"required": [
"url"
]
}🟢seo_page_check(url)
On-page SEO check of a URL: title and meta description length, H1s, canonical, robots meta and X-Robots-Tag (indexability), Open Graph and Twitter tags, hreflang, image alt text, word count and status. Web version: https://irfanaslam.io/tools/meta-tag-analyzer
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Page URL."
}
},
"required": [
"url"
]
}🟢robots_txt_test(url, user_agent)
Fetch a site's robots.txt and test whether a crawler (Googlebot, Bingbot, GPTBot, ClaudeBot, or any user agent) may crawl a path; also lists the sitemaps it declares. Web version: https://irfanaslam.io/tools/robots-txt-tester
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Page URL or domain to test, e.g. https://example.com/blog/post"
},
"user_agent": {
"type": "string",
"description": "Crawler, default Googlebot."
}
},
"required": [
"url"
]
}🟢sitemap_validate(url)
Fetch and check an XML sitemap or sitemap index: URL count, lastmod coverage, size limits, URLs on other hosts and sample URLs. Web version: https://irfanaslam.io/tools/sitemap-validator
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Sitemap URL, or a domain to try /sitemap.xml."
}
},
"required": [
"url"
]
}🟢whois_lookup(domain)
Domain registration details via RDAP: registration, expiry and update dates, status and nameservers. Web version: https://irfanaslam.io/tools/whois-lookup
Input Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain name, for example example.com (no https:// or path)."
}
},
"required": [
"domain"
]
}🟢email_address_validate(email)
Check an email address: syntax, whether its domain has MX records (can receive mail), common typos of popular domains and role or disposable addresses. Does not send any email. Web version: https://irfanaslam.io/tools/email-validator
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email address."
}
},
"required": [
"email"
]
}🟢phishing_link_check(url, follow_redirects)
Check a suspicious link for phishing warning signs (look-alike Saudi brands like Absher, Nafath, banks and couriers, risky domain endings, IP addresses, punycode, shorteners) and follow its redirects to the real destination. Web version: https://irfanaslam.io/tools/phishing-link-checker
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The link from the SMS, WhatsApp or email."
},
"follow_redirects": {
"type": "boolean",
"description": "Follow redirects to reveal the destination, default true."
}
},
"required": [
"url"
]
}🟢port_check(host, port)
Check whether a common service port (21, 22, 53, 80, 443, 465, 587, 993, 3306, 5432, 6379, 8080, 8443 and others) is open on a public host. Web version: https://irfanaslam.io/tools/port-checker
Input Schema
{
"type": "object",
"properties": {
"host": {
"type": "string",
"description": "Public hostname or IP."
},
"port": {
"type": "integer",
"description": "Port number.",
"minimum": 1,
"maximum": 65535
}
},
"required": [
"host",
"port"
]
}🟢saudi_traffic_fines(search, speed_limit, speed)
Saudi traffic violation fines (red light, phone, seatbelt, drifting, parking and more) and the Saher speeding fine band for a speed over the limit. Web version: https://irfanaslam.io/tools/saudi-traffic-fines
Input Schema
{
"type": "object",
"properties": {
"search": {
"type": "string",
"description": "Optional word to filter violations, e.g. phone, seatbelt, parking."
},
"speed_limit": {
"type": "number",
"description": "Road speed limit in km/h, to work out a speeding fine."
},
"speed": {
"type": "number",
"description": "Driving speed in km/h."
}
}
}🟢online_store_profit(price_incl_vat, product_cost, shipping, packaging, commission_percent, ...)
Profit per order for an online store in Saudi Arabia after 15% VAT, platform commission, payment fees (with VAT), shipping and subscription, plus break-even price and the price for a target margin. Web version: https://irfanaslam.io/tools/saudi-ecommerce-fee-calculator
Input Schema
{
"type": "object",
"properties": {
"price_incl_vat": {
"type": "number",
"description": "Selling price including VAT (SAR)."
},
"product_cost": {
"type": "number",
"description": "Product cost (SAR)."
},
"shipping": {
"type": "number",
"description": "Shipping you pay per order."
},
"packaging": {
"type": "number",
"description": "Packaging and other costs per order."
},
"commission_percent": {
"type": "number",
"description": "Platform commission % (noon about 4-27% by category, Amazon.sa often about 15%, own store 0)."
},
"payment_percent": {
"type": "number",
"description": "Payment fee % (mada via Zid Pay about 1, cards about 2.5, Tabby/Tamara 4-6)."
},
"payment_fixed": {
"type": "number",
"description": "Fixed payment fee per order (SAR)."
},
"monthly_subscription": {
"type": "number",
"description": "Monthly plan cost (SAR)."
},
"orders_per_month": {
"type": "number",
"description": "Orders a month."
},
"vat_registered": {
"type": "boolean",
"description": "Default true."
},
"target_margin_percent": {
"type": "number",
"description": "Default 20."
}
},
"required": [
"price_incl_vat"
]
}🟢nitaqat_estimate(saudis_4000_plus, saudis_3000_to_3999, saudis_under_3000, part_time_saudis, disabled_saudis, ...)
Estimate a company's Saudization percentage under Nitaqat with the published counting rules (wage thresholds, part-time, disabled, students) and how many full-time Saudis to hire to reach a target. Web version: https://irfanaslam.io/tools/nitaqat-calculator
Input Schema
{
"type": "object",
"properties": {
"saudis_4000_plus": {
"type": "number",
"description": "Full-time Saudis paid SAR 4,000+."
},
"saudis_3000_to_3999": {
"type": "number",
"description": "Full-time Saudis paid SAR 3,000-3,999."
},
"saudis_under_3000": {
"type": "number",
"description": "Saudis paid under SAR 3,000."
},
"part_time_saudis": {
"type": "number",
"description": "Part-time Saudis (GOSI on SAR 3,000+)."
},
"disabled_saudis": {
"type": "number",
"description": "Registered Saudis with a disability."
},
"student_saudis": {
"type": "number",
"description": "Saudi students working part-time."
},
"non_saudis": {
"type": "number",
"description": "Non-Saudi employees."
},
"target_percent": {
"type": "number",
"description": "Required Saudization % for the band, from Qiwa."
}
},
"required": [
"non_saudis"
]
}🟢zatca_deadlines(vat_filing, withholding_tax, financial_year_end_month, months)
Upcoming ZATCA filing deadlines: monthly or quarterly VAT returns, withholding tax (10th of the next month) and the zakat/income tax return (120 days after year end), with weekend shifts. Web version: https://irfanaslam.io/tools/zatca-deadline-calendar
Input Schema
{
"type": "object",
"properties": {
"vat_filing": {
"type": "string",
"enum": [
"monthly",
"quarterly",
"none"
],
"description": "Default quarterly."
},
"withholding_tax": {
"type": "boolean",
"description": "Pays non-residents (withholding tax). Default false."
},
"financial_year_end_month": {
"type": "integer",
"description": "1-12, default 12 (December).",
"minimum": 1,
"maximum": 12
},
"months": {
"type": "integer",
"description": "Months ahead, default 12.",
"minimum": 1,
"maximum": 24
}
}
}🟢airline_baggage_check(fare, pieces, kg_per_bag, cabin_kg, bags_kg, ...)
Check bag weights against Saudia, flynas or flyadeal typical allowances by fare (or your own allowance): over-weight bags, extra bags, the 32 kg per-bag limit and the cabin bag. Web version: https://irfanaslam.io/tools/saudi-airline-baggage-allowance
Input Schema
{
"type": "object",
"properties": {
"fare": {
"type": "string",
"enum": [
"saudia-economy-no-bag",
"saudia-economy",
"saudia-economy-flex",
"saudia-business",
"flynas-light",
"flynas-value",
"flynas-flex",
"flyadeal-fly",
"flyadeal-fly-plus",
"flyadeal-flymax"
],
"description": "Typical allowance preset; or give pieces and kg_per_bag."
},
"pieces": {
"type": "integer",
"description": "Checked bags allowed.",
"minimum": 0,
"maximum": 5
},
"kg_per_bag": {
"type": "number",
"description": "Kg allowed per checked bag."
},
"cabin_kg": {
"type": "number",
"description": "Cabin bag allowance, default 7."
},
"bags_kg": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 6,
"description": "Weight of each checked bag."
},
"cabin_bag_kg": {
"type": "number",
"description": "Weight of the cabin bag."
}
},
"required": [
"bags_kg"
]
}🟢arabic_numbers_convert(text, to, remove_tashkeel, remove_tatweel, normalise_alef, ...)
Convert digits between Western (0-9), Arabic-Indic (٠-٩) and Persian/Urdu (۰-۹), and optionally clean Arabic text: remove tashkeel and tatweel, normalise alef, ى and ة. Web version: https://irfanaslam.io/tools/arabic-numbers-converter
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Text to convert."
},
"to": {
"type": "string",
"enum": [
"western",
"arabic",
"persian",
"keep"
],
"description": "Digit style, default western."
},
"remove_tashkeel": {
"type": "boolean"
},
"remove_tatweel": {
"type": "boolean"
},
"normalise_alef": {
"type": "boolean"
},
"ya_and_ta_marbuta": {
"type": "boolean",
"description": "ى → ي and ة → ه."
}
},
"required": [
"text"
]
}🟢arabic_name_to_english(name, direction)
Write an Arabic name in English letters (usual spellings for 220 common names, letter rules for others, passport style and alternative spellings), or common English names back to Arabic. Web version: https://irfanaslam.io/tools/arabic-name-to-english
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name, in Arabic (or English for direction english_to_arabic)."
},
"direction": {
"type": "string",
"enum": [
"arabic_to_english",
"english_to_arabic"
],
"description": "Default arabic_to_english."
}
},
"required": [
"name"
]
}Community
Evidence