Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Qavanin

PYPI · QAVANIN-MCP

Unofficial read-only qavanin.ir: search Iranian laws and regulations, read full text and status.

Available components

80 Trust /100

Last scanned (1 hour ago)

Scores higher than 78% of PyPI servers

Category Education and Research

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 1 of 35 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to sepehr071/qavanin-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability62
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 1908 tokens (~272/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
  • Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 23 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 22 Oct 26 −14
    • Malware scan: pass → unverified ▼ security
    • Stability: unverified → 0.07 ▲ functional
    • Package version: 0.1.0 → 0.1.1 functional
  • 21 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 20 Oct 26 64

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 23 Oct 2026 · Analysed pypi/qavanin-mcp@0.1.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo sepehr071/qavanin-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/sepehr071/qavanin-mcp/.github/workflows/publish.yml@refs/tags/v0.1.1
Rekor log index 3390424564
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:9aac50a766b35f19b6979b245b5d9e577a5df26a7c2ae26ad351ad9dc328d1c3

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 35 packages
Packages resolved 35
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 7 exposed · ~1,482 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
qv_amendments ~129

Which laws amended this one, which this one amends, and which of its articles were amended. Returns `amended_by` and `amends` (id, title, approval date) and `articles`: section id, label, number of changes and the latest change. Read one article's full history with qv_article_history(section_id).

NameTypeReqDescription
idsstringyesLaw id (IDS) from qv_search, digits only, e.g. '12021850837713548188'.
limitinteger–Max amending/amended laws listed per direction.

No output schema declared.

No examples provided.

qv_article_history ~95

Every amendment of one article: type (اصلاحی...), date, the amending law and the replacing text. Use after qv_law or qv_amendments when asked how an article changed. Oldest change first. An article that was never amended returns an empty list.

NameTypeReqDescription
section_idstringyesSection id from qv_law (items marked history) or qv_amendments.

No output schema declared.

No examples provided.

qv_law ~297

Read the full text of a law, regulation, court vote or opinion as sections (articles, notes, headings). Each section has `id`, `label` ('ماده 10', 'تبصره 1'), `text`, `status` ('amended', 'repealed', 'opinion'; absent when plain) and `history: true` when qv_article_history can show its amendments. Long laws are paged by `offset`/`next_offset` within `max_chars`; the civil code has about 1,500 sections and takes about 15 s to load the first time. Get the id from qv_search. Use `article` to answer "what does article N say".

NameTypeReqDescription
article––Only this article with its notes, e.g. '10', 'ماده 10', '10 مکرر'.
date––Jalali 'YYYY/MM/DD': the text as it stood on that date (before later amendments).
idsstringyesLaw id (IDS) from qv_search, digits only, e.g. '12021850837713548188'.
max_charsinteger–Text budget per call.
offsetinteger–Skip this many sections (use next_offset from the last call).
with_opinionsboolean–Add interpretive opinions (نظر تفسیری) as extra sections.

No output schema declared.

No examples provided.

qv_law_info ~121

Metadata of a law: type, approving body, approval, notification and gazette dates and numbers, last status, effective date, executing bodies and recipients of the copy. Use after qv_search to cite a law ("approved 1318/..., published in gazette no. ...") or to check its type. Court votes and opinions carry almost no metadata. Dates are Jalali.

NameTypeReqDescription
idsstringyesLaw id (IDS) from qv_search, digits only, e.g. '12021850837713548188'.

No output schema declared.

No examples provided.

qv_lookup ~189

Find the ids that qv_search filters take: approving bodies, executing bodies, subjects, types, statuses, lists. Returns items with `id` and name; approvers, executors and subjects also have `count` (documents) and are paged by 20. Example: kind='approver', query='مجلس' gives the Majlis id to pass as approver_id.

NameTypeReqDescription
kindstringyes'approver' (مرجع تصویب), 'executor' (دستگاه مجری), 'subject' (موضوع), 'type' (نوع مصوبه), 'status' (وضعیت) or 'list' (curated lists).
pageinteger–Page of 20 for approver, executor and subject.
query––Name fragment, e.g. 'دیوان' or 'بانک'. Empty lists the most used.

No output schema declared.

No examples provided.

qv_related ~126

Documents related to a law: other laws, and regulations, court votes and legal opinions that cite or interpret it (hundreds for the civil code, newest first). Returns `laws` and `others`, each with id, title and date; read any with qv_law. Votes of the Administrative Justice Court and opinions are listed by title only.

NameTypeReqDescription
idsstringyesLaw id (IDS) from qv_search, digits only, e.g. '12021850837713548188'.
limitinteger–Max related documents returned per group.

No output schema declared.

No examples provided.

qv_search ~525

Search the Iranian law and regulation database (qavanin.ir, 168,000 documents) and list matching titles. Returns total hits, page count and items with `id` (the IDS to give qv_law, qv_law_info, qv_amendments and qv_related), title, approval date (Jalali), approving body and `repealed` for repealed ones. Text search shows no snippets. Use for "which law covers X", "all regulations of body Y in a date range" and "latest laws". Sorting by date has many ties, so paging a long list may repeat or skip a row; narrow the filters instead.

NameTypeReqDescription
approved_from––Approval date from, Jalali 'YYYY/MM/DD'.
approved_to––Approval date to, Jalali 'YYYY/MM/DD'.
approver_id––Approving body ids from qv_lookup(kind='approver'); several are OR-ed.
command_no––Notification number (شماره ابلاغ), digits, substring.
executor_id––Executing body ids from qv_lookup(kind='executor').
in_textboolean–Search the full text of every law, not only the titles.
kind––'law' (Majlis statutes), 'regulation', 'vote' (court rulings), 'opinion' (legal opinions).
limitinteger–Results per page.
list_id––A curated list id from qv_lookup(kind='list'), e.g. 113 for the latest laws.
matchstring–'all_words' every word as a whole word, 'phrase' words adjacent, 'part_of_word' substring match (the site default, widest), 'any_word' at least one whole word.
newspaper_no––Official gazette number (شماره روزنامه رسمی), digits, substring.
pageinteger–Page number, from 1.
query––Words to find, Persian or Arabic letters, e.g. 'مالیات بر ارزش افزوده'.
sortstring–By approval date, or 'title' (alphabetical by database collation; stable for paging).
status––Legal status. 'repealed' = منسوخه; 'moot' = بااجرامنتفی می شود. 'valid' undercounts.
subject_id––Subject ids from qv_lookup(kind='subject').
type_id––Document type ids from qv_lookup(kind='type').

No output schema declared.

No examples provided.

Install

How do I install the Qavanin MCP server?

Qavanin runs locally as a PyPI package, launched with uvx qavanin-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · qavanin-mcp

# add to Claude Code
claude mcp add sepehr071-qavanin-mcp -- uvx qavanin-mcp
Common questions

What is the Qavanin MCP server?

Qavanin is an MCP server listed in the public MCP registry as io.github.sepehr071/qavanin-mcp. Unofficial read-only qavanin.ir: search Iranian laws and regulations, read full text and status. This page covers its PyPI package (qavanin-mcp).

Is the Qavanin MCP server safe to use?

Qavanin scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Qavanin MCP server expose?

Qavanin exposes 7 tools: qv_law, qv_law_info, qv_amendments, qv_article_history, qv_related, and 2 more. Their descriptions and schemas cost roughly 1,482 tokens of context every time the server is loaded.

Is the Qavanin MCP server still maintained?

Qavanin is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Qavanin MCP server under?

Qavanin declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.