چیستارا — Iranian Legal Corpus
Search Iranian statutes, court rulings, advisory opinions and circulars, with legal calculators.
Should I use this
Quality & Safety
Findings (8)
- HIGH
- MEDIUMin search_circular
- MEDIUMin lookup_annual_rate
- MEDIUMin calculate_inheritance
- MEDIUMin calculate_stamp_duty
- MEDIUMin calculate_notary_fee
- MEDIUMin calculate_lawyer_fee
- LOWin lookup_procedure
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": {
"chistara": {
"url": "https://hoghogh.ai/mcp"
}
}
}Remote endpoints
https://hoghogh.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (20)
🟢search_law_articles(query, law_filter, limit)
Semantic + keyword search across the full text of Iranian statutes (60,000+ articles: قانون مدنی، مجازات اسلامی، کار، تجارت، آیین دادرسی و…). USE THIS BEFORE ANSWERING ANY QUESTION ABOUT IRANIAN LAW — do not rely on memory; article numbers and wording are frequently misremembered, and amended articles are a common trap. Returns matching articles with their exact article number, law title, a text excerpt, and a source_url to the full article. Cite the article number and link the source_url.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The legal question or topic, in Persian or English. Persian gives better recall."
},
"law_filter": {
"type": "string",
"description": "Optional: restrict to one law, e.g. «قانون مدنی» or «قانون کار»."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"default": 5
}
},
"required": [
"query"
]
}🟢lookup_law_article(law, article_number)
Fetch the VERBATIM text of a specific article when you already know the law and the article number (e.g. «ماده ۱۰ قانون مدنی»). Use this to verify wording before quoting it. Never paraphrase an article from memory — quote what this returns, and link the source_url. Also returns, when we hold them: `section_path` (the article's place in the law: کتاب/باب/فصل), `clauses` (its بند/جزء as labelled parts, so you can cite «بند ۲ ماده ۱۹۰»), `summary`/`summary_plain` (machine-written explanations — NOT statute text; never quote them as law), `keywords`, `topics`, `answers_in_text` (question → the exact slice of this article that answers it) and `related_articles` with their own source_urls.
Input Schema
{
"type": "object",
"properties": {
"law": {
"type": "string",
"description": "Law name in Persian, e.g. «قانون مدنی»."
},
"article_number": {
"type": "string",
"description": "Article number, e.g. «۱۰» or «10»."
}
},
"required": [
"law",
"article_number"
]
}🟢search_case_law(query, limit)
Search 31,000+ Iranian court rulings and آرای وحدت رویه (binding precedent). Use when the user asks how courts have actually decided an issue, or for precedent supporting a position. Returns excerpts with source_url.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The legal issue, in Persian."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"default": 5
}
},
"required": [
"query"
]
}🟢search_circular(query, limit)
Search official circulars and directives (بخشنامهها) from the judiciary and government bodies — the source of current official RATES and procedures. Returns excerpts with source_url.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Topic, in Persian."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"default": 5
}
},
"required": [
"query"
]
}🟢calculate_diyeh(injury_type, fraction, count, year, sacred_month, ...)
Calculate دیه for a bodily injury using the CURRENT official rate and the fractions set by قانون مجازات اسلامی. ALWAYS use this instead of computing دیه yourself: the full-دیه rate changes every Persian year and the per-injury fractions are statutory. Returns the amount with the governing article and the official rate source.
Input Schema
{
"type": "object",
"properties": {
"injury_type": {
"type": "string",
"enum": [
"full",
"eye_one",
"eye_both",
"ear_one",
"ear_both",
"hand_one",
"hand_both",
"foot_one",
"foot_both",
"finger_thumb",
"finger_other",
"finger_phalanx",
"tooth_front",
"tooth_molar",
"nose_full",
"nose_fracture",
"kidney_one",
"kidney_both",
"rib_heart",
"rib_each",
"rib_other",
"spleen",
"skull_fracture",
"spine_fracture",
"spine_fracture_healed",
"spinal_cord",
"eyelid_upper",
"eyelid_lower",
"testicle_left",
"testicle_right"
],
"description": "Injury key from the standard list (e.g. full = دیهٔ کامل, hand_one = یک دست, tooth_front = دندان جلویی). Pick the key, not free text."
},
"fraction": {
"type": "number",
"description": "دیه fraction between 0 and 1 — only when no injury_type fits."
},
"count": {
"type": "integer",
"description": "How many (fingers, teeth …). Default 1."
},
"year": {
"type": "integer",
"description": "Persian year (e.g. 1405). Defaults to the latest loaded rate."
},
"sacred_month": {
"type": "boolean",
"description": "Occurred in a ماه حرام (تغلیظ — applies to دیهٔ نفس only)."
},
"gender": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Gender of the injured/deceased."
}
},
"required": []
}🟢calculate_litigation_fee(claim_amount_toman, stage, case_type)
Calculate Iranian court filing fees (هزینهٔ دادرسی) for a monetary claim at a given stage (بدوی / تجدیدنظر / فرجام), using the current official percentages. Use this instead of estimating — the rates are statutory and stage-dependent.
Input Schema
{
"type": "object",
"properties": {
"claim_amount_toman": {
"type": "number",
"description": "Claim value in TOMAN (financial claims only)."
},
"stage": {
"type": "string",
"enum": [
"first",
"appeal",
"supreme"
],
"description": "Stage: first = بدوی, appeal = تجدیدنظر, supreme = فرجام/دیوان عالی."
},
"case_type": {
"type": "string",
"enum": [
"financial",
"non_financial"
],
"description": "financial = مالی (needs claim_amount_toman), non_financial = غیرمالی (fixed official figure)."
}
},
"required": [
"stage"
]
}🟢calculate_severance(years, months, last_salary_toman, unused_leave_days, contract_type, ...)
Calculate an Iranian employee's end-of-service entitlements (حق سنوات، عیدی، مانده مرخصی) under قانون کار, using the current official minimum wage. Use this instead of computing by hand.
Input Schema
{
"type": "object",
"properties": {
"years": {
"type": "number",
"description": "Years of service (may be fractional)."
},
"months": {
"type": "integer",
"description": "Extra months of service (0–11)."
},
"last_salary_toman": {
"type": "number",
"description": "Last monthly salary in TOMAN. Below the statutory minimum wage the minimum is used instead."
},
"unused_leave_days": {
"type": "number",
"description": "Stored unused annual leave days (ماده ۶۶ ق.کار caps storage at 9 days/yr)."
},
"contract_type": {
"type": "string",
"enum": [
"permanent",
"fixed"
],
"description": "permanent = دائمی, fixed = موقت. Default permanent."
},
"year": {
"type": "integer",
"description": "Persian year for the minimum-wage basis. Defaults to the latest."
}
},
"required": []
}🟢search_advisory_opinions(query, limit)
Search the advisory opinions (نظریات مشورتی) of the Judiciary's legal department (اداره کل حقوقی قوه قضائیه) — the official, citable interpretation of Iranian statutes. Use when the user asks how a provision is officially interpreted, or to support an argument. Advisory opinions are authoritative guidance, not binding law — say so when citing. Returns opinion number, date, and excerpt with source_url.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Topic, in Persian (e.g. «مهریه عندالاستطاعه», «اعسار»)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"default": 5
}
},
"required": [
"query"
]
}🟢lookup_annual_rate(rate_type, year_jalali)
Fetch official Iranian yearly rates from the database: minimum wage (min_wage), court filing fees (court_fee_*), salary tax exemption (salary_tax_exemption_annual), Central Bank price index for delay damages (cbi_price_index), daily severance (sanavat_daily). حقالوکاله is NOT an annual rate — use calculate_lawyer_fee. ALWAYS use this instead of recalling a rate — yearly figures are exactly what models misremember. For دیه use calculate_diyeh instead. Read each row's `unit` field: «rials» means Rial and «درصد» means percent — never report a percentage as a Rial amount.
Input Schema
{
"type": "object",
"properties": {
"rate_type": {
"type": "string",
"description": "Rate key, e.g. min_wage, court_fee_financial_first, cbi_price_index, sanavat_daily."
},
"year_jalali": {
"type": "number",
"description": "Persian year (optional — defaults to the latest available)."
}
},
"required": [
"rate_type"
]
}🟢lookup_sentencing_range(crime_type, crime_grade)
Look up the statutory punishment for an Iranian crime — imprisonment, fine, lashes, قصاص, دیه — with the governing article. Use when the user asks what the punishment for a crime is, or for criminal-risk analysis. Never state a sentencing range from memory.
Input Schema
{
"type": "object",
"properties": {
"crime_type": {
"type": "string",
"description": "Crime, in Persian (e.g. «کلاهبرداری»، «سرقت»، «خیانت در امانت»)."
},
"crime_grade": {
"type": "number",
"description": "Optional تعزیری grade (1–8)."
}
},
"required": [
"crime_type"
]
}🟢lookup_statute_of_limitations(case_category, crime_grade)
Check Iranian limitation periods (مرور زمان) — prosecution, execution, and filing deadlines — for a case category. Use when the user asks whether a claim is time-barred or how long they have to file.
Input Schema
{
"type": "object",
"properties": {
"case_category": {
"type": "string",
"enum": [
"criminal",
"civil",
"family",
"labor",
"administrative"
],
"description": "Case category."
},
"crime_grade": {
"type": "number",
"description": "Optional تعزیری grade (1–8), criminal only."
}
},
"required": [
"case_category"
]
}🟢lookup_procedure(case_type, procedure_name)
Look up Iranian procedural deadlines (مهلت تجدیدنظر، واخواهی، اعتراض ثالث، اجرای حکم…) with the governing law and article, by case type. Use when the user asks how long they have for a procedural step. Deadlines differ by case type — never answer from memory.
Input Schema
{
"type": "object",
"properties": {
"case_type": {
"type": "string",
"enum": [
"حقوقی",
"کیفری",
"خانواده",
"کار",
"اداری"
],
"description": "Case type, in Persian."
},
"procedure_name": {
"type": "string",
"description": "Optional procedure key (e.g. tajdid_nazar_madani, faryad_khahi); omit to list all procedures for the case type."
}
},
"required": [
"case_type"
]
}🟢calculate_mahrieh(coins, coin_type, cash_toman, marriage_year)
Calculate the present-day value of a مهریه: coins at the live market rate, and any cash portion adjusted by the Central Bank index (تبصرهٔ مادهٔ ۱۰۸۲ قانون مدنی). Never guess coin prices or the adjustment index — this tool reads both from the database. If there is a cash portion, ask for marriage_year; without it the cash stays nominal and must not be called «ارزش روز».
Input Schema
{
"type": "object",
"properties": {
"coins": {
"type": "number",
"description": "Number of coins in the مهریه."
},
"coin_type": {
"type": "string",
"enum": [
"azadi",
"emami",
"half",
"quarter",
"gram"
],
"description": "Coin type (default azadi = تمام بهار آزادی)."
},
"cash_toman": {
"type": "number",
"description": "Cash portion in Toman (optional)."
},
"marriage_year": {
"type": "number",
"description": "Jalali marriage year (needed to adjust the cash portion to today's value)."
}
},
"required": []
}🟢calculate_inheritance(total_assets_toman, deceased_gender, has_spouse, has_father, has_mother, ...)
Calculate Iranian inheritance shares (سهمالارث) under قانون مدنی arts. 862–949, including حجب نقصانی reduction rules. The jurisprudential edge cases make hand computation unreliable — always use this tool.
Input Schema
{
"type": "object",
"properties": {
"total_assets_toman": {
"type": "number",
"description": "Total estate value in Toman."
},
"deceased_gender": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Gender of the deceased."
},
"has_spouse": {
"type": "boolean",
"description": "Surviving spouse?"
},
"has_father": {
"type": "boolean",
"description": "Father alive?"
},
"has_mother": {
"type": "boolean",
"description": "Mother alive?"
},
"son_count": {
"type": "integer",
"description": "Number of sons."
},
"daughter_count": {
"type": "integer",
"description": "Number of daughters."
},
"sibling_count": {
"type": "integer",
"description": "Deceased's siblings (for حجب نقصانی)."
}
},
"required": [
"total_assets_toman",
"deceased_gender"
]
}🟢calculate_delay_penalty(principal, principal_unit, start_year, start_month, end_year, ...)
Calculate خسارت تأخیر تأدیه under art. 522 ق.آ.د.م using the Central Bank price index. The index series is official data — never approximate it. Dates are Jalali.
Input Schema
{
"type": "object",
"properties": {
"principal": {
"type": "number",
"description": "Principal debt amount."
},
"principal_unit": {
"type": "string",
"enum": [
"toman",
"rial"
],
"description": "Unit of the principal (default Toman)."
},
"start_year": {
"type": "integer",
"description": "Jalali year the debt fell due."
},
"start_month": {
"type": "integer",
"description": "Jalali start month 1–12 (optional)."
},
"end_year": {
"type": "integer",
"description": "Jalali year of calculation/payment."
},
"end_month": {
"type": "integer",
"description": "Jalali end month 1–12 (optional)."
}
},
"required": [
"principal",
"start_year",
"end_year"
]
}🟢calculate_stamp_duty(tx_type, amount_toman)
Calculate حقالثبت (registration duty) for property, vehicle, company, marriage and divorce documents. Distinct from حقالتحریر (the notary's own fee — use calculate_notary_fee for that).
Input Schema
{
"type": "object",
"properties": {
"tx_type": {
"type": "string",
"enum": [
"property_sale",
"property_gift",
"vehicle",
"mortgage",
"power_attorney",
"marriage",
"divorce",
"company",
"will"
],
"description": "Transaction/document type."
},
"amount_toman": {
"type": "number",
"description": "Transaction amount in Toman (for rate-based types)."
}
},
"required": [
"tx_type"
]
}🟢calculate_notary_fee(doc_type, amount_toman, obligor_count)
Calculate حقالتحریر (the notary office's fee) from the official 1405 tariff for دفاتر اسناد رسمی. Distinct from حقالثبت (use calculate_stamp_duty for that). Never estimate the tariff.
Input Schema
{
"type": "object",
"properties": {
"doc_type": {
"type": "string",
"enum": [
"immovable",
"sale",
"movable",
"vehicle",
"financial",
"mortgage",
"partnership",
"lease",
"poa_sale",
"poa_vehicle",
"power_of_attorney",
"undertaking",
"mahrieh_release",
"division",
"student_undertaking",
"endowment",
"will",
"will_ahdi",
"settlement",
"collateral_swap",
"other_nonfinancial",
"mortgage_release",
"execution_writ",
"signature_cert",
"sana_signup"
],
"description": "Document type. Rate-based types (need amount_toman): immovable/sale, movable/vehicle, financial/mortgage/partnership, lease. Others are fixed-fee."
},
"amount_toman": {
"type": "number",
"description": "Document amount in Toman (rate-based types only; for real estate this is ارزش معاملاتی, not market price)."
},
"obligor_count": {
"type": "number",
"description": "Number of obligors (optional; each beyond two adds a surcharge)."
}
},
"required": [
"doc_type"
]
}🟢calculate_lawyer_fee(case_type, criminal_grade, stage, outcome, case_value_toman, ...)
Calculate حقالوکاله from آییننامهٔ تعرفهٔ حقالوکاله (1398/12/28): financial claims are a marginal ladder on the claim value (art. 9); family, non-financial, criminal and administrative matters are a min–max RANGE independent of value (arts. 13, 14, 20). `stage` is art. 21's share of the whole-case fee (60% first instance / 40% appeal). The tariff does not scale by winning or losing. Never guess a lawyer's statutory fee.
Input Schema
{
"type": "object",
"properties": {
"case_type": {
"type": "string",
"enum": [
"civil",
"family",
"non_financial",
"criminal",
"admin",
"board"
],
"description": "civil = financial claim (art. 9); family = family/حسبی (art. 13a); non_financial (art. 13b); criminal (art. 14, needs criminal_grade); admin = دیوان عدالت اداری / تعزیرات (art. 20); board = non-judicial boards e.g. labour (art. 20)."
},
"criminal_grade": {
"type": "string",
"enum": [
"k1_grade1",
"k1_grade2_3",
"k1_other",
"k2_hodud_diyat_grade4_5",
"k2_grade6",
"k2_other"
],
"description": "Criminal only: court (کیفری یک / دو) and offence grade."
},
"stage": {
"type": "string",
"enum": [
"first",
"appeal",
"cassation"
],
"description": "first = 60%, appeal = 40%, cassation = on the appeal tariff (arts. 16–17)."
},
"outcome": {
"type": "string",
"enum": [
"judgment",
"settlement",
"dismissed_no_merits",
"rejected_after_defence",
"voided_before_defence"
],
"description": "How the case ends (default judgment). Settlement is paid in full (art. 23); art. 12 halves or quarters a fee for قرار رد / ابطال."
},
"case_value_toman": {
"type": "number",
"description": "Claim value in Toman — civil only."
},
"final_at_first_instance": {
"type": "boolean",
"description": "Civil only: first-instance judgment is final as to value ⇒ flat 10% (art. 9 opening)."
}
},
"required": [
"stage"
]
}🟢calculate_expert_fee(kind, value_rial, modifiers, expert_count, travel_days_same_province, ...)
Calculate the official تعرفهٔ دستمزد کارشناسان رسمی دادگستری (1398/12/25, amended 1402/08). `valuation` is a marginal ladder on the ارزش موضوع کارشناسی (art. 11) with a hard per-expert cap and explicit percentage add-ons for a few named subject matters (art. 11 notes 3–7, art. 22(2)); `residual` is the flat minimum for expert work with no specific tariff in this instrument (art. 9); `evidence` is the flat minimum for تأمین دلیل (art. 7). Dozens of OTHER specialties (arts. 13–55) carry their own separate tariff and are not modelled here. Never guess a court expert's statutory fee.
Input Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"valuation",
"residual",
"evidence"
],
"description": "valuation = art. 11 ladder (needs value_rial); residual = flat minimum, no specific tariff (art. 9); evidence = تأمین دلیل flat minimum (art. 7)."
},
"value_rial": {
"type": "number",
"description": "Value of the subject matter under appraisal, in RIAL — valuation only. Never pass Toman."
},
"modifiers": {
"type": "array",
"items": {
"type": "string",
"enum": [
"contract_dispute",
"contract_dispute_partial",
"damage_assessment",
"used_goods",
"intangible_assets",
"underground_mine"
]
},
"description": "valuation only; usually at most one: contract_dispute = employer/contractor/consulting-engineer dispute or صورتوضعیت review over the whole contract value (+100%, art. 11 note 3); contract_dispute_partial = appraisal of only part of the contract, e.g. finding breach or delay (+50%, note 3); damage_assessment = determining cause and extent of damage (+50%, note 4); used_goods = used parts/goods/food-drug-hygiene items/scrap/tools/micro-electronics, standalone (+50%, note 5); intangible_assets = brand and other intangibles (+50%, note 7); underground_mine = underground mineral reserves (+35%, art. 22(2))."
},
"expert_count": {
"type": "integer",
"description": "Number of same-specialty experts working the SAME subject jointly (valuation only). More than 1 applies a 30% reduction per expert (art. 11 note 6). Default 1 (no reduction). Do not use for a multi-specialty panel — price each specialty separately."
},
"travel_days_same_province": {
"type": "integer",
"description": "Mission days within the expert's own province (art. 6 daily travel allowance) — added to any kind."
},
"travel_days_other_province": {
"type": "integer",
"description": "Mission days outside the expert's own province (art. 6)."
}
},
"required": [
"kind"
]
}🟢calculate_tax(tax_type, monthly_toman, value_toman, asset_kind, heir_class, ...)
Calculate Iranian salary, property-transfer, inheritance or rental tax. For inheritance: rates depend on asset kind and heir class (arts. 17–18 ق.م.م) with NO general monetary exemption, and pre/post-1395 death dates differ — ask before calling. Property basis is ارزش معاملاتی, not market price.
Input Schema
{
"type": "object",
"properties": {
"tax_type": {
"type": "string",
"enum": [
"salary",
"property_transfer",
"inheritance",
"rental"
],
"description": "Tax type."
},
"monthly_toman": {
"type": "number",
"description": "Monthly salary (for salary)."
},
"value_toman": {
"type": "number",
"description": "Property value (property_transfer) or taxable asset value (inheritance)."
},
"asset_kind": {
"type": "string",
"enum": [
"real_estate",
"goodwill",
"bank_deposit",
"listed_shares",
"unlisted_shares",
"vehicle",
"other"
],
"description": "Asset kind (required for inheritance)."
},
"heir_class": {
"type": "integer",
"enum": [
1,
2,
3
],
"description": "Heir class (inheritance, art. 18): 1=parents/spouse/children, 2=grandparents/siblings ×2 rate, 3=aunts/uncles ×4 rate."
},
"monthly_rent_toman": {
"type": "number",
"description": "Monthly rent (for rental)."
},
"residential_under_exempt_area": {
"type": "boolean",
"description": "Rental: residential unit within the exempt floor-area (150m² Tehran / 200m² elsewhere)."
},
"no_other_income": {
"type": "boolean",
"description": "Rental: individual landlord with no other income (art. 57 exemption)."
}
},
"required": [
"tax_type"
]
}Recommended Prompts
search_law_articlessearch_law_articlesCommunity
Evidence