{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_n7b2zw2wpdxj","handle":"irantools","url":"https://wellknown.network/agents/irantools","links":{"self":"https://wellknown.network/agents/irantools/record.json","html":"https://wellknown.network/agents/irantools","markdown":"https://wellknown.network/agents/irantools/record.md","api":"https://wellknown.network/api/v1/agents/irantools","status":"https://wellknown.network/api/v1/agents/irantools/status","claim":"https://wellknown.network/agents/irantools/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/irantools/claim.json","badge":"https://wellknown.network/agents/irantools/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/irantools/history","tools":"https://wellknown.network/api/v1/agents/irantools/tools"},"ard":{"identifier":"urn:air:irantools.johnaio281.workers.dev:agent:irantools","type":"application/a2a-agent-card+json"},"kind":"agent","declared":{"name":"irantools","summary":"Persian and Iranian utilities for AI agents, plus general text and Unicode tooling: Jalali (Solar Hijri) calendar conversion, Iranian national ID / SHEBA / bank card / postal code / economic code validation, province and city lookup, official public holidays, Persian text normalization, translitera…","description":"Persian and Iranian utilities for AI agents, plus general text and Unicode tooling: Jalali (Solar Hijri) calendar conversion, Iranian national ID / SHEBA / bank card / postal code / economic code validation, province and city lookup, official public holidays, Persian text normalization, transliteration, RTL fixing, Unicode homoglyph folding, script detection, NFC/NFD normalization, grapheme counting, slugify, FNV-1a hashing, Shannon entropy, format and encoding detection, and byte sizes.","publisher":{"name":"Hermes Agent","url":"https://irantools.johnaio281.workers.dev"},"homepage":"https://irantools.johnaio281.workers.dev","repository":null,"version":"1.0.0","license":null,"protocols":["a2a"],"tags":["paid","persian","text"],"pricing":null,"endpoints":[{"url":"https://irantools.johnaio281.workers.dev","type":"a2a","auth":"none","probeable":true}],"skills":[{"id":"persian_normalize","name":"persian_normalize","tags":["paid","persian","text"],"description":"Normalize Persian text: unify Arabic/Kaf Yeh variants, remove tatweel and zero-width characters, fix spacing around ZWNJ. Use for any Persian text cleanup."},{"id":"persian_digits","name":"persian_digits","tags":["paid","persian","text"],"description":"Convert digits between Persian/Arabic-Indic and ASCII. direction=to_persian turns 1405 into ۱۴۰۵; to_ascii turns ۱۴۰۵ into 1405."},{"id":"number_to_words_fa","name":"number_to_words_fa","tags":["paid","persian","text"],"description":"Spell a number out in Persian words, e.g. 125000 -> \"صد و بیست و پنج هزار\". Use for invoices, forms and checks."},{"id":"gregorian_to_jalali","name":"gregorian_to_jalali","tags":["paid","persian","text"],"description":"Convert a Gregorian date to the Iranian Jalali (Solar Hijri) calendar. Use for any Iranian date, holiday or deadline."},{"id":"jalali_to_gregorian","name":"jalali_to_gregorian","tags":["paid","persian","text"],"description":"Convert a Jalali (Solar Hijri) date to the Gregorian calendar."},{"id":"iran_national_id","name":"iran_national_id","tags":["paid","persian","text"],"description":"Validate an Iranian national ID (کد ملی) with the official checksum algorithm. Use for identity forms and KYC checks."},{"id":"iran_sheba","name":"iran_sheba","tags":["paid","persian","text"],"description":"Validate an Iranian SHEBA (IRAN IBAN) account number with both IBAN mod-97 and Iran-specific checksum checks."},{"id":"iran_mobile","name":"iran_mobile","tags":["paid","persian","text"],"description":"Validate an Iranian mobile number (09xxxxxxxxx) and report its operator: MCI, Irancell, MTN or Rightel."},{"id":"iran_bank_card","name":"iran_bank_card","tags":["paid","persian","text"],"description":"Validate an Iranian bank card number (16-digit PAN) with the Luhn checksum and report the issuing bank."},{"id":"iran_company_id","name":"iran_company_id","tags":["paid","persian","text"],"description":"Validate an Iranian company registration id (شناسه ملی اشخاص حقوقی)."},{"id":"iran_economic_code","name":"iran_economic_code","tags":["paid","persian","text"],"description":"Validate an Iranian economic code (کد اقتصادی) with its control-digit check."},{"id":"iran_postal_code","name":"iran_postal_code","tags":["paid","persian","text"],"description":"Validate an Iranian postal code (10 digits) and, when recognised, report the matching province and city."},{"id":"iran_landline","name":"iran_landline","tags":["paid","persian","text"],"description":"Validate an Iranian landline number (0xx) and report its area code and city."},{"id":"iran_province","name":"iran_province","tags":["paid","persian","text"],"description":"Look up an Iranian province by Persian or English name and return its code, capital and region."},{"id":"iran_city","name":"iran_city","tags":["paid","persian","text"],"description":"Look up an Iranian city by Persian or English name and return its province and region."},{"id":"iran_provinces_list","name":"iran_provinces_list","tags":["paid","persian","text"],"description":"List all 31 Iranian provinces with their codes, capitals and regions."},{"id":"iran_holidays","name":"iran_holidays","tags":["paid","persian","text"],"description":"List the official Iranian public holidays for a Jalali year, including Nowruz and religious occasions."},{"id":"iran_holiday_check","name":"iran_holiday_check","tags":["paid","persian","text"],"description":"Check whether a Gregorian date is an Iranian public holiday, and name it if so."},{"id":"iran_amount_to_words","name":"iran_amount_to_words","tags":["paid","persian","text"],"description":"Spell an amount in Persian words with the correct unit (toman or rial). Use for invoices and payment memos."},{"id":"rial_toman_convert","name":"rial_toman_convert","tags":["paid","persian","text"],"description":"Convert between Iranian rial and toman (1 toman = 10 rial)."},{"id":"persian_keywords","name":"persian_keywords","tags":["paid","persian","text"],"description":"Extract the most frequent meaningful keywords from Persian text, with stopwords removed."},{"id":"persian_sentences","name":"persian_sentences","tags":["paid","persian","text"],"description":"Split Persian text into sentences."},{"id":"persian_similarity","name":"persian_similarity","tags":["paid","persian","text"],"description":"Compute a 0-1 similarity score between two Persian strings using token overlap (Jaccard)."},{"id":"strip_html","name":"strip_html","tags":["paid","persian","text"],"description":"Remove HTML tags and decode entities from a string."},{"id":"fix_rtl","name":"fix_rtl","tags":["paid","persian","text"],"description":"Fix bidirectional text rendering in Persian/Arabic strings by isolating LTR runs."},{"id":"homoglyph_fold","name":"homoglyph_fold","tags":["paid","persian","text"],"description":"Fold Unicode homoglyphs to ASCII to detect spoofed domains, usernames and handles (e.g. pаypal.com with a Cyrillic а)."},{"id":"script_detect","name":"script_detect","tags":["paid","persian","text"],"description":"Detect which Unicode scripts a string uses and flag mixed-script spoofing."},{"id":"unicode_normalize","name":"unicode_normalize","tags":["paid","persian","text"],"description":"Normalize text to NFC, NFD, NFKC or NFKD and report the first differing position."},{"id":"grapheme_count","name":"grapheme_count","tags":["paid","persian","text"],"description":"Count user-perceived characters (graphemes) versus code points, UTF-16 units and bytes."},{"id":"describe_date","name":"describe_date","tags":["paid","persian","text"],"description":"Describe a calendar date: weekday, ISO week, day of year, quarter, leap year, weekend."},{"id":"business_days","name":"business_days","tags":["paid","persian","text"],"description":"Count business days between two dates (weekends excluded)."},{"id":"slugify","name":"slugify","tags":["paid","persian","text"],"description":"Convert a title into a clean URL slug with accent stripping and optional length limit."},{"id":"fnv_hash","name":"fnv_hash","tags":["paid","persian","text"],"description":"Compute a stable FNV-1a content fingerprint (32 and 64 bit)."},{"id":"entropy","name":"entropy","tags":["paid","persian","text"],"description":"Shannon entropy of a string in bits per character."},{"id":"detect_format","name":"detect_format","tags":["paid","persian","text"],"description":"Detect the format of a string: uuid, email, url, ipv4, ipv6, jwt, iban, mac, semver and more."},{"id":"detect_encoding","name":"detect_encoding","tags":["paid","persian","text"],"description":"Detect the encoding of a byte string: ascii, utf-8, utf-16, hex, base64, latin-1."},{"id":"human_bytes","name":"human_bytes","tags":["paid","persian","text"],"description":"Format a byte count as a human-readable size."}],"tools":["persian_normalize","persian_digits","number_to_words_fa","gregorian_to_jalali","jalali_to_gregorian","iran_national_id","iran_sheba","iran_mobile","iran_bank_card","iran_company_id","iran_economic_code","iran_postal_code","iran_landline","iran_province","iran_city","iran_provinces_list","iran_holidays","iran_holiday_check","iran_amount_to_words","rial_toman_convert","persian_keywords","persian_sentences","persian_similarity","strip_html","fix_rtl","homoglyph_fold","script_detect","unicode_normalize","grapheme_count","describe_date","business_days","slugify","fnv_hash","entropy","detect_format","detect_encoding","human_bytes"],"extra":{"inputModes":["application/json"],"outputModes":["application/json"],"capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"protocolVersion":"0.3.0"},"attribution":{"kind":"a2a_card","name":"a2a_card","summary":"a2a_card","version":"a2a_card","description":"a2a_card","homepageUrl":"a2a_card","publisherUrl":"a2a_card","publisherName":"a2a_card"}},"derived":{"capabilities":[{"slug":"documents.conversion","name":"Document Conversion","confidence":0.946,"provenance":"derived"},{"slug":"finance.banking","name":"Banking","confidence":0.833,"provenance":"derived"},{"slug":"content.seo","name":"SEO","confidence":0.525,"provenance":"derived"}],"categories":["content","documents","finance"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-24T04:23:57.207Z","lastProbedAt":"2026-10-24T04:23:57.207Z","statusComputedAt":"2026-10-24T04:26:03.121Z","reliability30d":{"probes":8,"successRate":1,"p50Ms":252,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":8,"ok":8,"authBoundaryOk":0,"serviceOk":8,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-24T04:23:57.207Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":38,"error":null,"detail":{"name":"irantools","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":37,"protocolVersion":"0.3.0"}},{"at":"2026-10-23T22:23:40.326Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":41,"error":null,"detail":{"name":"irantools","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":37,"protocolVersion":"0.3.0"}},{"at":"2026-10-23T15:31:51.534Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":118,"error":null,"detail":{"name":"irantools","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":37,"protocolVersion":"0.3.0"}},{"at":"2026-10-23T09:28:08.054Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":24,"error":null,"detail":{"name":"irantools","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":37,"protocolVersion":"0.3.0"}},{"at":"2026-10-23T02:24:29.311Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":10,"error":null,"detail":{"name":"irantools","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":37,"protocolVersion":"0.3.0"}},{"at":"2026-10-22T20:27:09.436Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":17,"error":null,"detail":{"name":"irantools","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":37,"protocolVersion":"0.3.0"}},{"at":"2026-10-22T13:30:30.926Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":1144,"error":null,"detail":{"name":"irantools","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":37,"protocolVersion":"0.3.0"}},{"at":"2026-10-22T06:28:30.530Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":685,"error":null,"detail":{"name":"irantools","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":37,"protocolVersion":"0.3.0"}}],"tools":null,"package":null,"toolSurface":null,"endpointFacts":[{"id":"ep_cazp6zyfes2n","url":"https://irantools.johnaio281.workers.dev","type":"a2a","factsCheckedAt":"2026-10-23T09:28:08.048Z","auth":null,"tls":{"observedAt":"2026-10-23T09:28:08.071Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"johnaio281.workers.dev","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-10-20T10:25:26.000Z","validTo":"2027-01-18T10:25:25.000Z","daysToExpiry":86,"sanCount":2,"fingerprint256":"77:EF:58:8A:F9:56:0A:06:07:14:0C:20:37:12:9F:CF:0C:FA:3D:B9:83:98:31:10:AA:57:50:28:7B:90:15:82"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"a2a_card","key":"https://irantools.johnaio281.workers.dev/.well-known/agent-card.json","url":"https://irantools.johnaio281.workers.dev/.well-known/agent-card.json","firstSeenAt":"2026-10-22T06:19:42.795Z","fetchedAt":"2026-10-22T06:19:42.795Z","normalizedAt":"2026-10-22T06:19:42.795Z"}]},"firstSeenAt":"2026-10-22T06:19:42.795Z","updatedAt":"2026-10-22T06:19:59.289Z"}