# Time.ir Calendar (pypi · time-ir-mcp)

Read-only Time.ir Iranian calendar: Jalali/Gregorian/Hijri dates, holidays, events, prayer times.

- Trust score: 65/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-04

## Components

- pypi · `time-ir-mcp`: 65/100 (this document), [markdown](https://verifymcp.io/servers/sepehr071-time-ir-mcp/time-ir-mcp.md), [page](https://verifymcp.io/servers/sepehr071-time-ir-mcp/time-ir-mcp)

## Channel facts

- Registry: `pypi`
- Package: `time-ir-mcp`
- Version: `0.1.0`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-04.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - 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.
  - 1 of 35 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to sepehr071/time-ir-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.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2293 tokens (~176/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Time.ir Calendar MCP server?

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

### Claude

```bash
claude mcp add sepehr071-time-ir-mcp -- uvx time-ir-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "sepehr071-time-ir-mcp": {
      "command": "uvx",
      "args": [
        "time-ir-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sepehr071-time-ir-mcp": {
      "command": "uvx",
      "args": [
        "time-ir-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add sepehr071-time-ir-mcp -- uvx time-ir-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sepehr071-time-ir-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "time-ir-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sepehr071-time-ir-mcp --command uvx --arg time-ir-mcp
```

### Hermes

```yaml
mcp_servers:
  sepehr071-time-ir-mcp:
    command: "uvx"
    args: ["time-ir-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "sepehr071-time-ir-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "time-ir-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add sepehr071-time-ir-mcp -t stdio -c uvx -a time-ir-mcp
```

### Other

```json
{
  "mcpServers": {
    "sepehr071-time-ir-mcp": {
      "command": "uvx",
      "args": [
        "time-ir-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 65, −15)

- [security regression] Malware scan: pass → unverified

### 2026-11-02 (score 80, +15)

- [security improvement] Malware scan: unverified → pass
- [functional regression] Security disclosure: unverified → fail

### 2026-11-01 (score 65)

First indexed and scored.

## MCP tools (13)

### `ti_today` (~75 tokens)

Today

Get today's date in the Jalali, Gregorian and Hijri calendars with the Tehran time, weekday, zodiac sign and today's events.

Use this first when the user says "today", "now" or asks what the date or time is in Iran. For another date use
ti_events; to convert a date use ti_convert_date.

### `ti_convert_date` (~145 tokens)

Convert date

Convert a date between the Jalali (Solar Hijri), Gregorian and Hijri (lunar) calendars, using time.ir's own converter.

Returns the same day in all three calendars with the weekday and month names. Jalali dates run from 1 to 9999;
the Hijri date is Iran's official one (it can differ by a day from Saudi Arabia's).

Input parameters:

- `calendar` (string): Calendar of `date`: jalali (Solar Hijri, default), gregorian or hijri (lunar).
- `date` (string, required): Date as YYYY-MM-DD, for example 1405-08-10 or 2026-11-01.

### `ti_month` (~131 tokens)

Month calendar

Show one Jalali month: its Gregorian and Hijri month spans, weekday of day 1, holidays and every event of the month.

Use for "what is on the calendar in Aban 1405" or "holidays this month". For one day's occasions with their
descriptions use ti_events; for the whole year's holidays use ti_holidays.

Input parameters:

- `month`: Jalali month 1 (Farvardin) to 12 (Esfand). Omit for the current one.
- `year`: Jalali year, for example 1405. Omit for the current one.

### `ti_events` (~166 tokens)

Events of a day

List the occasions (Persian: monasebat) and official holidays of one day, with a short description when time.ir has one.

Use for "what is special on 13 Aban", "is 2026-12-25 a holiday in Iran". Events come from the Jalali, Gregorian and
Hijri calendars together; each has `calendar` (where the occasion belongs) and `holiday`. Friday is the weekend
and is not marked as a holiday on its own.

Input parameters:

- `calendar` (string): Calendar of `date`: jalali (Solar Hijri, default), gregorian or hijri (lunar).
- `date`: Date as YYYY-MM-DD in the chosen calendar (for example 1405-08-10). Omit for today.

### `ti_holidays` (~98 tokens)

Holidays of a year

List all official holidays (تعطیلات رسمی) of a Jalali year with Gregorian and Hijri dates and weekdays.

Use for "holidays in 1405" or "how many days off". A Friday is listed only when it is also an occasion holiday. Use
ti_upcoming_holidays for "the next holiday".

Input parameters:

- `year`: Jalali year, for example 1405. Omit for the current year.

### `ti_upcoming_holidays` (~123 tokens)

Upcoming holidays

List the next official holidays in Iran starting today (or from_date), with days until each.

Use for "when is the next holiday" or "long weekends coming up". Fridays alone are not listed.

Input parameters:

- `calendar` (string): Calendar of `date`: jalali (Solar Hijri, default), gregorian or hijri (lunar).
- `count` (integer): How many holidays to return.
- `from_date`: Date as YYYY-MM-DD in the chosen calendar (for example 1405-08-10). Omit for today.

### `ti_cities` (~109 tokens)

Cities

List Iran's provinces, or the cities of one province, with the ids ti_prayer_times takes.

Without arguments it returns the 31 provinces with their capital city (id included). Give `province` to list its
cities (with latitude, longitude), optionally filtered by `query`.

Input parameters:

- `province`: Province name or id (from this tool without arguments), for example 'فارس'. Omit to list the 31 provinces.
- `query`: Only cities whose name contains this text.

### `ti_prayer_times` (~216 tokens)

Prayer times

Get the Islamic prayer times (اوقات شرعی) for an Iranian city and day: fajr, sunrise, noon, sunset, maghrib and Islamic midnight.

Times are Iran local time (Asia/Tehran, 24 h). Use for "azan time in Mashhad today". Time.ir's backend answers
for today only, so another `date` returns an error. For a city that is not a provincial capital pass `province`;
ti_cities lists the cities and ids.

Input parameters:

- `calendar` (string): Calendar of `date`: jalali (Solar Hijri, default), gregorian or hijri (lunar).
- `city` (string, required): City name (Persian), for example 'شیراز', or a city id from ti_cities.
- `date`: Date as YYYY-MM-DD in the chosen calendar (for example 1405-08-10). Omit for today.
- `province`: Province name or id; only needed when `city` is not a provincial capital.

### `ti_qibla` (~134 tokens)

Qibla direction

Get the qibla direction (bearing to the Kaaba in Mecca, degrees clockwise from true north) and distance for an Iranian city.

Computed here by great-circle math from the city's coordinates on time.ir; Time.ir itself shows no qibla. Use for
"which way is qibla in Tabriz". Bearing is from true north, not magnetic north.

Input parameters:

- `city` (string, required): City name (Persian), for example 'شیراز', or a city id from ti_cities.
- `province`: Province name or id; needed when `city` is not a provincial capital.

### `ti_on_this_day` (~128 tokens)

On this day in history

List today's historical events, birthdays and deaths of notable people, as Time.ir's "today" page shows them.

Use for "what happened on this day in history" or "who was born today". Only today is available (the page takes
no date). Each item has the occasion `date` as Time.ir prints it (a Gregorian date with year for history, a Jalali
day for national occasions). For an occasion search over a whole year use ti_search_events.

Input parameters:

- `kind`: Keep only births (birth), deaths (death) or other historical events (event).

### `ti_search_events` (~171 tokens)

Search occasions

Search all occasions (monasebat) of a Jalali year by keyword and return each match with its dates.

Use for "when is Teacher's Day", "all martyrdom dates in 1405" or "which world days are in Azar". Searches titles
first, then descriptions. Results are in date order. For one day use ti_events.

Input parameters:

- `calendar`: Keep only occasions of this calendar (jalali: national, gregorian: world days, hijri: religious).
- `holiday_only` (boolean): Keep only official holidays.
- `limit` (integer): Most results to return.
- `query` (string, required): Text to look for in occasion names and descriptions, for example 'معلم'.
- `year`: Jalali year to search. Omit for the current one.

### `ti_date_difference` (~172 tokens)

Date difference

Count the days between two dates and give the span as Jalali years, months and days (age calculator).

Use for "how old is someone born on 1380-05-17" (leave to_date empty for today) or "days until Nowruz". Both
dates use the same `calendar`. If to_date is before from_date the result says `direction: before`.

Input parameters:

- `calendar` (string): Calendar of `date`: jalali (Solar Hijri, default), gregorian or hijri (lunar).
- `from_date` (string, required): Start date YYYY-MM-DD, for example a birth date 1380-05-17.
- `to_date`: Date as YYYY-MM-DD in the chosen calendar (for example 1405-08-10). Omit for today.

### `ti_long_weekends` (~138 tokens)

Long weekends

Find runs of consecutive days off in a Jalali year: official holidays joined with Fridays (optionally Thursdays).

Use for "long weekends in 1405" or "when can I take a 4-day trip". Bridge days are not counted and a run cut by the
year boundary is cut there. The week starts on Saturday. For the plain holiday list use ti_holidays.

Input parameters:

- `min_days` (integer): Shortest run of days off to list.
- `thursday_off` (boolean): Also count Thursdays as days off (many offices close).
- `year`: Jalali year. Omit for the current one.

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/sepehr071-time-ir-mcp/time-ir-mcp#diagnostics

## Score history

- 2026-11-04: 65
- 2026-11-03: 80
- 2026-11-02: 80
- 2026-11-01: 65

## Common questions

### What is the Time.ir Calendar MCP server?

Time.ir Calendar is an MCP server listed in the public MCP registry as io.github.sepehr071/time-ir-mcp. Read-only Time.ir Iranian calendar: Jalali/Gregorian/Hijri dates, holidays, events, prayer times. This page covers its PyPI package (time-ir-mcp).

### Is the Time.ir Calendar MCP server safe to use?

Time.ir Calendar scores 65 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 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 Time.ir Calendar MCP server expose?

Time.ir Calendar exposes 13 tools: ti_today, ti_convert_date, ti_month, ti_events, ti_holidays, and 8 more. Their descriptions and schemas cost roughly 1,806 tokens of context every time the server is loaded.

### Is the Time.ir Calendar MCP server still maintained?

Time.ir Calendar is still listed as active in the MCP registry. We last reached this channel on 4 November 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 Time.ir Calendar MCP server under?

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

## Links

- PyPI project: https://pypi.org/project/time-ir-mcp/
- Socket report: https://socket.dev/pypi/package/time-ir-mcp
- Repository: https://github.com/sepehr071/time-ir-mcp
- Changelog RSS feed: https://verifymcp.io/servers/sepehr071-time-ir-mcp/time-ir-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/sepehr071-time-ir-mcp/time-ir-mcp.json
- HTML version of this page: https://verifymcp.io/servers/sepehr071-time-ir-mcp/time-ir-mcp
