{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-06T09:47:12.697Z","url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp","markdownUrl":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp.md","server":{"slug":"sepehr071-amar-mcp","name":"Statistical Centre of Iran","registryName":"io.github.sepehr071/amar-mcp","description":"Read-only Statistical Centre of Iran (amar.org.ir): CPI inflation, unemployment, census, any table.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"amar-mcp","type":"pypi","identifier":"amar-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp","version":"0.1.1","transport":"stdio","scoredAt":"2026-11-06T01:26:03.367Z"},"score":{"total":81,"tier":"high trust","status":"scored","weekDelta":null,"history":[{"date":"2026-11-06","total":81},{"date":"2026-11-05","total":81},{"date":"2026-11-04","total":80},{"date":"2026-11-03","total":80},{"date":"2026-11-02","total":64},{"date":"2026-11-01","total":79}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","Runs hatchling.build at install time, a recognised build step with no custom scripting around it.","3 of 39 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.allowlisted","args":{"tool":"hatchling.build","hooks":"build_backend"}},{"code":"dephealth.assessed","args":{"deps":"39","unhealthy":"3"}}]},{"name":"Provenance & Transparency","score":97,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to sepehr071/amar-mcp).","Clear OSI-approved license (MIT).","Actively maintained (last published 3 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"sepehr071/amar-mcp"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"3"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":63,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 2915 tokens (~242/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"242","items":"12","tools":"12","tokens":"2915","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":17,"verdict":"partial","reasons":["Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"5"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"12"}},{"code":"toolsafety.manipulation_clean","args":{"units":"13","judged":"13"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"amar-mcp","type":"pypi","identifier":"amar-mcp","withdrawn":false,"score":81,"current":true,"url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp","markdownUrl":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp.md"}],"facts":[{"label":"Registry","value":"pypi"},{"label":"Package","value":"amar-mcp"},{"label":"Version","value":"0.1.1"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"am_search","title":"Search statistical releases","description":"Search the Statistical Centre of Iran (amar.org.ir) catalog of releases: tables, time series, reports.\n\nUse it to find a release by Persian title words, year, how often it is published or its type. With no filters\nit lists the newest releases. Each result has an id: pass it to am_release for the files, or to am_table to read\nan Excel table. Ready tools need no search: am_inflation, am_labour_force, am_population, am_gdp, am_ppi and\nam_indicators (trade, housing, money, budget, household income and spending). `source` and `data_type` narrow\nby the portal's own system and data type (tables, publications, metadata, visual).","inputs":[{"name":"category","type":null,"required":false,"description":"Top-level topic: population = demographic and social, economic, cross-sector = cross-cutting and environment"},{"name":"data_type","type":null,"required":false,"description":"The portal's data type: statistical tables, publications and reports, metadata and microdata, images"},{"name":"kind","type":null,"required":false,"description":"Type of publication"},{"name":"page","type":"integer","required":false,"description":"Page of 25 results, 1-based"},{"name":"period","type":null,"required":false,"description":"How often the release is published"},{"name":"query","type":null,"required":false,"description":"Persian words in the title, e.g. 'نرخ بیکاری', 'تولید ناخالص', 'جمعیت استان'"},{"name":"source","type":null,"required":false,"description":"Which Centre system holds it: the national portal, statistical info services, digital library"},{"name":"year","type":null,"required":false,"description":"Jalali year of the statistical time, e.g. 1404"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":318},{"name":"am_release","title":"Get one release","description":"Get one statistical release from amar.org.ir: title, topic path, period and its downloadable files.\n\nUse it after am_search. Files are Excel (xlsx/xls), PDF or Word links; read an Excel file with am_table\n(passing this id), open the PDF link yourself. A release the portal removed gives an error.","inputs":[{"name":"id","type":"integer","required":true,"description":"Release id from am_search, e.g. 58298"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":94},{"name":"am_calendar","title":"Release calendar","description":"Get the Statistical Centre of Iran's publishing calendar: which statistics come out on which day of a month.\n\nUse it to answer \"when is the next inflation (or labour force, GDP...) release\". Each item gives the product,\nthe responsible office, the month and day it is scheduled for and the period it covers. `id` is set once the\nrelease is published: pass it to am_release. Dates are Jalali (month 1 = فروردین). Planned dates can shift.","inputs":[{"name":"month","type":null,"required":false,"description":"Month number 1-12 or Persian name (e.g. 'آبان'); omit for the whole year"},{"name":"query","type":null,"required":false,"description":"Persian words in the product name, all must match, e.g. 'نیروی کار' or 'مصرفی'"},{"name":"year","type":"integer","required":false,"description":"Jalali year of the calendar"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":177},{"name":"am_news","title":"News and press releases","description":"List the latest news and press releases of the Statistical Centre of Iran, or read one item.\n\nWithout `id` it returns the newest items (id, title, summary, GMT time, url) from the portal's news feed;\n`query` keeps only items whose title or summary has all those words. With `id` it returns the item's date,\ncategories and text (long items are cut at 4000 characters). Use it for announcements such as census news,\ninterviews and release notes; the numbers themselves are in the data tools.","inputs":[{"name":"count","type":"integer","required":false,"description":"How many latest items to fetch for the list (newest first)"},{"name":"id","type":null,"required":false,"description":"News item id from the list, to read its text"},{"name":"query","type":null,"required":false,"description":"Persian words that must all appear in the title or summary (list mode)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":173},{"name":"am_inflation","title":"Inflation (CPI)","description":"Get Iran's official consumer price index (CPI) and inflation from the Statistical Centre of Iran, latest first.\n\nPer month: the index, the change on the previous month (monthly_pct), the change on the same month a year\nearlier (point_to_point_pct, the headline \"inflation\" figure) and the change of the 12-month average on the\nprevious 12 months (twelve_month_avg_pct, \"annual inflation\"). Use region and group for a breakdown (food,\nhousing, ...) or province for one province (no index there, no groups). `newer_report` appears when the portal\nhas published a later month as PDF before its Excel series is updated.","inputs":[{"name":"group","type":null,"required":false,"description":"A CPI group: Persian name part (e.g. 'مسکن', 'خوراک', 'حمل') or its 2-digit code ('04'). Omit for the all-items index. See am_inflation_groups for the list."},{"name":"months","type":"integer","required":false,"description":"How many latest months to return"},{"name":"province","type":null,"required":false,"description":"Province name (e.g. 'تهران', 'خوزستان'): returns that province's all-items inflation instead"},{"name":"region","type":"string","required":false,"description":"Households: all of Iran, urban or rural"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":263},{"name":"am_inflation_groups","title":"Inflation by CPI group","description":"Compare official inflation across CPI groups (food, housing, transport, health...) for one month.\n\nFor each main group: the index, the monthly change, the change on the same month a year earlier\n(point_to_point_pct) and the 12-month average change. Use it to see what drives inflation. For one group's\nhistory over many months use am_inflation with `group`.","inputs":[{"name":"period","type":null,"required":false,"description":"Month as YYYY-MM (e.g. '1405-06'); omit for the latest month"},{"name":"region","type":"string","required":false,"description":"Households: all of Iran, urban or rural"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":131},{"name":"am_labour_force","title":"Labour force","description":"Get Iran's official unemployment and labour-force participation rates by quarter, latest first.\n\nFrom the Statistical Centre's labour force survey: percent of the active population (unemployment) or of the\npopulation 15+ (participation), for the whole country, urban and rural areas. The newest quarter lags about\ntwo to three months. For other labour tables (employment by sector, hours, wages) use am_search.","inputs":[{"name":"measure","type":"string","required":false,"description":"unemployment = rate for people 15 and older; participation = economic participation rate; youth_unemployment = ages 15-24; all = unemployment and participation"},{"name":"quarters","type":"integer","required":false,"description":"How many latest quarters"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":144},{"name":"am_population","title":"Population of provinces and counties","description":"Get population and households by province, or by county within one province, from Iran's 1395 census.\n\nThe latest published full census (Aban 1395 = 2016) with total, urban, rural, male and female population and\nhouseholds. The 1405 census is under way and not published yet. For projections to later years or age groups\nuse am_search ('پیش بینی جمعیت') and am_table.","inputs":[{"name":"province","type":null,"required":false,"description":"Province name (e.g. 'فارس', 'گیلان'): lists its counties instead of all provinces"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":124},{"name":"am_table","title":"Read an Excel table","description":"Read an Excel table of a statistical release as compact rows (works for any release with an xlsx/xls file).\n\nFirst call with just the id: you get the sheet list with sizes and titles. Then pass `sheet`; rows come as\n[excel_row_number, cell, cell...] with empty rows removed. Use `find` to pick rows (e.g. a province or a group\nname), `offset` to page and `col_offset` for wide monthly series (the newest values are usually at the right\nend: see `cols` in the answer). Files over 25 MB are refused.","inputs":[{"name":"col_offset","type":"integer","required":false,"description":"Skip this many columns on the left (wide time series)"},{"name":"file","type":"integer","required":false,"description":"Which Excel file of the release (1-based, see am_release)"},{"name":"find","type":null,"required":false,"description":"Only rows that contain this text in any cell"},{"name":"id","type":"integer","required":true,"description":"Release id from am_search or am_release"},{"name":"max_cols","type":"integer","required":false,"description":"Columns to return"},{"name":"max_rows","type":"integer","required":false,"description":"Rows to return"},{"name":"offset","type":"integer","required":false,"description":"Skip this many matching rows (for paging)"},{"name":"sheet","type":null,"required":false,"description":"Sheet name or 1-based number. Omit to list the sheets first."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":258},{"name":"am_indicators","title":"Macro indicators","description":"Read the Centre's monthly macro-indicators workbook: trade, housing, money, budget, prices by decile and more.\n\nThe workbook (شاخص های کلان اقتصادی و اجتماعی کشور) stacks about 100 small tables on 12 subjects, mostly\nannual and recent quarters or months. Call with no arguments for the topics, with `topic` for its table list\n(n, title), then with `topic` and `table` for the data: columns carry the combined header text, rows are\n[label, values...]. Dash and '000' placeholders come back as null. Data runs to different dates per table\n(housing prices stop at 1400, trade at 1404); the release it came from is in `source`. The newest file\nis found by title, so no id is needed.","inputs":[{"name":"col_offset","type":"integer","required":false,"description":"Skip this many columns on the left (wide tables)"},{"name":"find","type":null,"required":false,"description":"Only rows whose first cell contains this text (a year, province, month...)"},{"name":"last","type":"integer","required":false,"description":"Rows to return: the latest ones in a time table, else the first"},{"name":"max_cols","type":"integer","required":false,"description":"Columns to return"},{"name":"table","type":null,"required":false,"description":"Table number from the topic's list, or Persian words of its title (e.g. 'اجاره', 'دهک')"},{"name":"topic","type":null,"required":false,"description":"Subject sheet: population (and labour, education), household (income, expenditure, Gini, deciles), accounts (national accounts), prices (CPI by decile or province, PPI, food prices), money, budget (g…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":364},{"name":"am_gdp","title":"GDP growth (quarterly)","description":"Get Iran's official GDP growth by quarter or year, with the main sectors, latest first.\n\nFrom the Centre's quarterly national accounts (base year 1400 = 2021). growth_pct is the change at constant\nprices on the same quarter a year earlier; gdp_ex_oil_pct leaves out crude oil and gas. Sector growth is\nfor agriculture, industry (includes oil, mining, manufacturing, construction) and services. Levels are in\nbillion rials. For the full tables (value added by activity, expenditure side) use am_table with the\n`source.release` id.","inputs":[{"name":"frequency","type":"string","required":false,"description":"quarterly national accounts or yearly totals"},{"name":"periods","type":"integer","required":false,"description":"How many latest quarters (or years)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":158},{"name":"am_ppi","title":"Producer price index","description":"Get Iran's producer price index (PPI, factory-gate prices) by quarter and sector, latest first.\n\nPer quarter: the index (100 = 1400), the change on the previous quarter, on the same quarter a year earlier\n(point_to_point_pct) and of the 4-quarter average (annual_pct). Producer prices lead consumer prices, so use it\nnext to am_inflation. Detailed PPI series (industry sub-sectors, poultry, dairy, mining, services) are separate\nreleases: find them with am_search('شاخص قیمت تولید کننده') and read them with am_table.","inputs":[{"name":"quarters","type":"integer","required":false,"description":"How many latest quarters"},{"name":"sector","type":null,"required":false,"description":"Persian name part: 'كل' (default, all sectors), 'كشاورزي', 'معدن', 'صنعت', 'برق', 'خدمات'"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":187}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T01:26:03.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[{"hook":"build_backend","tier":"allowlisted"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":39,"partial":false,"deprecated":null,"stale":2,"noRepo":1}},"mismatches":[],"changelog":{"trackingSince":"2026-11-01","recent":[{"id":"chg_01a1a950-d64c-7e8b-a4c9-2a9ab1482e6c","kind":"score.total_changed","summary":"Trust score (80 → 81)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp#chg-chg_01a1a950-d64c-7e8b-a4c9-2a9ab1482e6c"},{"id":"chg_01a19f03-aa4a-7f0c-9246-ae41f046db0c","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp#chg-chg_01a19f03-aa4a-7f0c-9246-ae41f046db0c"},{"id":"chg_01a19f03-aa4c-7227-87db-4509c315f74b","kind":"score.total_changed","summary":"Trust score (64 → 80)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp#chg-chg_01a19f03-aa4c-7227-87db-4509c315f74b"},{"id":"chg_01a19b3e-f893-73cd-8146-ff5de96985ad","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp#chg-chg_01a19b3e-f893-73cd-8146-ff5de96985ad"},{"id":"chg_01a19b3e-f893-7c71-8870-0f40f333bcd6","kind":"package.version_changed","summary":"Package version (0.1.0 → 0.1.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp#chg-chg_01a19b3e-f893-7c71-8870-0f40f333bcd6"},{"id":"chg_01a19b3e-f894-7403-932d-85ee81bc44f8","kind":"score.total_changed","summary":"Trust score (79 → 64)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp#chg-chg_01a19b3e-f894-7403-932d-85ee81bc44f8"},{"id":"chg_01a19687-f12e-7711-bf3b-dc4c4f0b6c72","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp#chg-chg_01a19687-f12e-7711-bf3b-dc4c4f0b6c72"},{"id":"chg_01a19673-dd41-77e9-a677-46ff254f2a96","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp#chg-chg_01a19673-dd41-77e9-a677-46ff254f2a96"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp","markdown":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp.md","changelogJson":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/sepehr071-amar-mcp/amar-mcp.xml","external":[{"label":"PyPI project","href":"https://pypi.org/project/amar-mcp/"},{"label":"Socket report","href":"https://socket.dev/pypi/package/amar-mcp"},{"label":"Repository","href":"https://github.com/sepehr071/amar-mcp"}]}}